整数与字符串转换的C实现

来源:本站
导读:目前正在解读《整数与字符串转换的C实现》的相关信息,《整数与字符串转换的C实现》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《整数与字符串转换的C实现》的详细说明。
简介:即将就业,也复习复习相关的知识,看了看嵌入式C的笔试题,整体感觉考试题目还是蛮有意思的,考点都比较重要,而且比较细,主要还是设计到一些指针和数组已经函数指针等基本的概念。

比如:

如何实现两个值中的最大值:((a+b) + abs(a-b))/2

如何实现不依靠中间量实现两个变量值的交换:

a = a + b;

b = a - b;

a = a - b;

或者

a = a^b;

b = a^b;

a = a^b;

其中后面的这种方式更加的优越。

sizeof与strlen的区别

其中sizeof是一个操作符,在编译过程中就能确定结果,但是strlen是一个函数,只有在运行的时候才能得到返回值。

指针、数组、函数等各种形式的指针结合起来也是出题的重点。

在编程中主要是设计到字符串、链表的处理问题,我就找几个简单的程序当做练兵吧。实现整数和字符串之间的转换问题。这个转换问题实质上是处理好ASCII码与数字之间的切换关系,即数字的ASCII码形式为‘0’= 0 + 48; ‘9’= 9 + 48;0 = '0'-48。

这个关系是转换过程中最主要的问题,当然整数到字符串的转换过程中需要注意负数的影响,如果负数没有正确处理,就可能出现一些莫名其妙的结果。

首先实现字符串到整数的转换过程:这个过程相对来说比较容易,因为这个过程可直接判断是正数还是负数,直接判断下标0对应的内容即可,其他的可以通过逐步求和累加的形式实现。基本的转换过程如下:

int myatoi(char *src)

{

char flag = 0;

int sum = 0;

int i = 0;

int len = strlen(src);

/*参数的正确性*/

if(NULL == src)

{

return 0;

}

/*是否存在符号问题*/

if(src[i] == '-')

{

flag = '-';

++ i ;

}

for( ; i < len ; ++ i)

{

/*判断字符是否合法*/

if(src[i] < 48 && src[i] > 57)

return 0;

/*数据求和,注意数值的转换问题src[i] - 48*/

sum = sum *10 + src[i] - 48;

}

/*根据标志位实现返回正确的正负数*/

if(flag == '-')

return -sum;

else

return sum;

}

整数到字符串的转换:实际上就是将一个整数的各个位分离出来,然后实现字符串的排序问题,因为数字长度的不确定性使得不便于快速的确定字符串的长度,只能首先分解,然后排序。同时也需要注意符号的存在,基本的转换过程如下:

char* myitoa(int num, char *str)

{

char flag = 0;

int i = 0, count = 0, j = 0;

/*参数检测*/

if(NULL == str)

{

return NULL;

}

/*判断数值的正负,设置对应的符号*/

if(num < 0)

{

str[i ++] = '-';

/************************

同时要对数值取绝对值

保证后面取余整除操作正常

*************************/

num = -num;

}

while(num / 10)

{

/***************************

count用来保存实际的数字个数,

便于后期的顺序调换

****************************/

++ count;

/*实际保存的顺序为反序列*/

str[i++] = num % 10 + 48;

num /= 10;

}

/*判断是*/

if(num %10)

{

str[i++] = num %10 + 48;

++ count;

}

/*字符串结束符*/

str[i] = 0;

/*实现数据的较好操作*/

i = 0;

if(str[0] == '-')

{

i = 1;

}

/*实际交换的下标区间为i~j*/

j = count + i - 1;

for(; i < j ; ++ i, --j)

{

/*数据的较好操作*/

str[i] = str[i] + str[j];

str[j] = str[i] - str[j];

str[i] = str[i] - str[j];

}

/*返回实际的字符串*/

return str;

}

上面的代码就实现了字符串与整数的转换问题,基本上实现了各种情况的转换。

提醒:《整数与字符串转换的C实现》最后刷新时间 2024-03-14 01:02:07,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《整数与字符串转换的C实现》该内容的真实性请自行鉴别。