gpt4 book ai didi

c++ - 将 [char] 变量转换为 [int],然后再转换回 [char]

转载 作者:行者123 更新时间:2023-11-30 21:32:36 24 4
gpt4 key购买 nike

我使用的是 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,而是在最高有效数字上加 1。

最佳答案

我发现真的很难相信你的编译器会让这段代码通过:

char result[4];  //declared to store the result
result = itoa(my_number); // Output is unexpected.

出于一个原因,您正在尝试重新安装阵列。这是不应该允许的。另一方面,itoa() 通常采用三个 参数。它的原型(prototype)应该是这样的:

char *itoa(int value, char * str, int base);

所以你应该将其称为:

char result[4];
itoa(my_number, result, 10);

或者,如果您想使用不会发生缓冲区溢出的可移植函数:

char result[4];
snprintf(result, 4, "%d", my_number);

关于c++ - 将 [char] 变量转换为 [int],然后再转换回 [char],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com