При запуске моей программы с параметром 15 atoi возвращает 1. Atoi возвращает только первую цифру. Это должно произойти? Как мне обойти это?
int _tmain(int argc, char* argv[])
{
int a = atoi(argv[1]);
}
При запуске моей программы с параметром 15 atoi возвращает 1. Atoi возвращает только первую цифру. Это должно произойти? Как мне обойти это?
int _tmain(int argc, char* argv[])
{
int a = atoi(argv[1]);
}
Он должен преобразовать всю строку с завершающим нулем:
#include <iostream>
#include <stdlib.h>
int main() {
std::cout << atoi("15");
}
результат:
15
При переходе с _tmain на main проблема была решена.
_tmain
, вы также должны использовать TCHAR
вместо char и _ttoi
вместо atoi
- person Joni; 08.10.2013
atoi
вернул 1? - person David Schwartz   schedule 07.10.2013a
является локальным и никогда не используется, у компилятора нет причин записывать результат вa
. - person David Schwartz   schedule 07.10.2013atoi(argv[1])
отпечатков 1 - person rcj   schedule 07.10.2013a
? Вам нужно сделать значениеa
частью наблюдаемого поведения вашей программы. Использование отладчика для наблюдения за поведением ненадежно. Использование отладчика для анализа наблюдаемого поведения довольно надежно. На самом деле наблюдение за поведением надежно. Вы выбрали худший способ принять это решение. - person David Schwartz   schedule 07.10.2013printf( "%d\n", a ) ;
илиstd::cout << a << std::endl;
- person Shafik Yaghmour   schedule 07.10.2013