【发布时间】:2014-12-11 07:33:46
【问题描述】:
我正在使用 Visual C 6
我正在尝试将字符数组(单引号)转换为整数,然后将值递增 1,然后将结果存储回不同的字符数组中。
但是当我转换回字符时,我总是得到一个意想不到的值..
这是我的代码
char char_array[4];
char_array[0] = '1';
char_array[1] = '2';
char_array[2] = '3';
char_array[3] = '\0'; //Terminating character
int my_number = atoi(char_array);
printf("my_number = %d" , my_number); // output is 123
my_number++; // works and my_number is incremented =124
printf("now: my_number = %d" , my_number); // output is 124
char result[4]; //declared to store the result
result = itoa(my_number); // Output is unexpected.
printf("%c", result[0]); // Output is 2 instead of 1
printf("%c", result[1]); // Output is 2
printf("%c", result[2]); // Output as 3 instead of 4
似乎函数 itoa() 不知何故知道原始值 123 并且以某种奇怪的方式知道我已经增加了该值..但是添加到错误的数字。不是在最低有效位上加 1,而是在最高有效位上进行加法。
【问题讨论】:
-
你有一个大小为 3 的数组,你假装它的大小为 4。
-
-1 不是真正的代码。例如
itoa的参数数量错误,尝试重新安装数组。