笔试基本上没有不考字符串的,字符串也是一种比较简单的数据结构,容易多次引起面试官反复发问。我曾不止一次在面试时被考官要求当场写出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;
}
不使用标准库函数实现整数与字符串转化
最新推荐文章于 2022-01-19 02:11:14 发布