编程中容易犯错的就是所要处理的字符串没有以’
编程中容易犯错的就是所要处理的字符串没有以’\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