atoi возвращает только первую цифру параметра char *

При запуске моей программы с параметром 15 atoi возвращает 1. Atoi возвращает только первую цифру. Это должно произойти? Как мне обойти это?

int _tmain(int argc, char* argv[])
{
    int a = atoi(argv[1]);
}

person rcj    schedule 07.10.2013    source источник
comment
Как вы определили, что atoi вернул 1?   -  person David Schwartz    schedule 07.10.2013
comment
путем разрыва после этой строки и просмотра значения в   -  person rcj    schedule 07.10.2013
comment
Это не сработает. Поскольку a является локальным и никогда не используется, у компилятора нет причин записывать результат в a.   -  person David Schwartz    schedule 07.10.2013
comment
Не уверен, что вы предлагаете. объявление в отдельной строке не решает проблемы. Этот 1 наверняка записывается в файл. печать отпечатков 1. печать atoi(argv[1]) отпечатков 1   -  person rcj    schedule 07.10.2013
comment
Почему бы не распечатать значение a? Вам нужно сделать значение a частью наблюдаемого поведения вашей программы. Использование отладчика для наблюдения за поведением ненадежно. Использование отладчика для анализа наблюдаемого поведения довольно надежно. На самом деле наблюдение за поведением надежно. Вы выбрали худший способ принять это решение.   -  person David Schwartz    schedule 07.10.2013
comment
@ user2081737 Почему бы вам не добавить printf( "%d\n", a ) ; или std::cout << a << std::endl;   -  person Shafik Yaghmour    schedule 07.10.2013


Ответы (2)


Он должен преобразовать всю строку с завершающим нулем:

#include <iostream>
#include <stdlib.h>

int main() {
    std::cout << atoi("15");
}

результат:

15
person Jerry Coffin    schedule 07.10.2013
comment
это сработало правильно. Кажется, мой argv странный ... Он делал это до использования компьютеров в этой библиотеке, но я не помню, как я решил это. - person rcj; 07.10.2013

При переходе с _tmain на main проблема была решена.

person rcj    schedule 07.10.2013
comment
Если вы используете _tmain, вы также должны использовать TCHAR вместо char и _ttoi вместо atoi - person Joni; 08.10.2013