я нахожу проблему с помощью метода atoi () в ANSI C? - PullRequest
1 голос
/ 02 апреля 2010

у меня есть строка, инициализируемая {'\ 0'} каждый раз, когда выполняется цикл ia, и в нем хранятся некоторые символы в диапазоне от 0 до 9, когда я конвертирую atoi (temp), где temp = "2", он возвращает мне 20 вместо 2 что мне нужно сделать, чтобы получить точные значения, требуется помощь.

Ответы [ 3 ]

2 голосов
/ 02 апреля 2010

Независимо от того, в чем ваша проблема с получением atoi на работу, вам лучше использовать strtol. Из справочного руководства по libc:

- Функция: int atoi (const char * STRING)

 This function is like `atol', except that it returns an `int'.
 The `atoi' function is also considered obsolete; use `strtol'
 instead

См. этот ответ , например, как использовать strtol.

0 голосов
/ 19 июня 2010

Я думаю, проблема не в atoi, должно быть что-то еще. Пожалуйста, проверьте указатели, пошаговую отладку и т. Д.

0 голосов
/ 02 апреля 2010

Несколько вещей для проверки:

  • Пересняли ли вы строку после добавления своих символов?
  • Вы выделили достаточно памяти для всей строки, включая новый нулевой терминатор?

Как-то так должно работать:

char buffer[2] = {'\0'}; // note "[2]" to set aside two bytes
buffer[0] = '2';
buffer[1] = '\0'; // ensure it's still terminated
printf("%d\n", atoi(buffer));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...