Я использую Visual C 6Преобразование [символов] переменную [Int], а затем обратно в [символ]
Я пытаюсь преобразовать массив символов (одной кавычки) в целое число, то приращением значение 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. – juanchopanza
** - 1 ** не настоящий код. напримерневерное количество аргументов в 'itoa', попытка переустановки массива. –