不使用标准库函数实现整数与字符串转化

笔试基本上没有不考字符串的,字符串也是一种比较简单的数据结构,容易多次引起面试官反复发问。我曾不止一次在面试时被考官要求当场写出strcpy函数的表达方式。事实上,字符串也是考验一个程序员编程规范和编程习惯的重要考点。不要忽视这些细节,因为这些细节会体现你在操作系统、软件工程、边界内存处理等方面知识的掌控能力,也会成为企业是否录用你的参考因素。

1、怎样将整数转化成字符串数,并且不用标准函数itoa。
   解析:整数转化成字符串,可以采用加'0',再逆序的方法,整数加'0'就会隐性转化成char类型的数。
   程序代码如下:
   #include <stdio.h>

   int main(void)
   {
      int num = 12345, j = 0, i = 0;
      char temp[7], str[7];
      
      //采用加'0'法转化为字符串
      while (num != 0)
      {
         temp[i] = num % 10 + '0';
         i++;
         num = num / 10;
      }
      temp[i] = 0;
      
      //刚转化后的字符串是逆序的,必须把它反转过来。
      i = i - 1;
      while (i >= 0)
      {
         str[j] = temp[i];
         j++;
         i--;
      }
      str[j] = 0;

      printf("number %d string is %s. ", num, str);
      return 0;
   }

2、怎样将字符串转化成整数,并且不用标准函数atoi。
   解析:字符串转化成整数,可以采用减'0'再乘10累加的方法,字符串减'0'就会隐性转化成int类型的数。
   程序代码如下:
   #include <stdio.h>
  
   int main(void)
   {
      int i = 0, sum = 0;
      char str[7] = "12345";
      while (str[i] != 0)
      {
         sum = sum * 10 + (str[i] - '0');
         i++;
      }
      printf("string %s number is %d. ", str, sum);
      return 0;
   }

3、字符串拷贝函数strcpy标准写法。
   解析:函数接口应该定义为char* strcpy(char* strDest, const char* strSrc);strSrc加const修饰,增加了程序的健壮性,保证函数内不会对strSrc所指内容进行修改,返回值为char*是为了实现链式表达式。
   程序代码:
   char* strcpy(char* strDest, const char* strSrc)
   {
      assert((strDest != NULL) && (strSrc != NULL));
      char* address = strDest;
      while ((*strDest++ = *strSrc++) != 0);
      return address;
   } 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值