阅读背景:

atoi函数理解字符存储_慎思明辨的博客

来源:互联网 

编程中容易犯错的就是所要处理的字符串没有以’

编程中容易犯错的就是所要处理的字符串没有以’\0’结尾,如下代码

typedef struct example{
  ...
  char serial_number[4];
  int  index;
  ...
}TEST_PARAM;

TEST_PARAM test_param;

memset(&test_param, 0, sizeof(test_param));
memcpy(test_param.serial_number, "1234", sizeof(test_param.serial_number));
test_param.index = 49;

printf("serial_number = %d\n", atoi(test_param.serial_number));

输出打印不是1234,而是12341,只要index赋值在[48,57]之间,都会出错。


atoi函数的具体实现细节可以查看这里
当所处理的字符为非对应的数字时便停止。

这里需要搞清楚的是字符‘0’~‘9’而不是数字1~9。

字符在内存中是以其对应的ascii值存储中,如下表对应关系(出处

当以%c输出打印时,显示的是其符号形式(symbol),当以%d输出打印时,显示的时其对应的ascii值。


’结尾,如下代码

typedeftyped



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: