Заранее спасибо за то, что прочитали это,
Я тренируюсь получать и обрабатывать аргументы из командной строки, пишу программу, которая принимает один аргумент и возвращает его размер. Из того, что я прочитал, каждый аргумент командной строки завершается нулем, и к каждому отдельному символу можно получить доступ как к обычному 2D-массиву (пожалуйста, поправьте меня, если я ошибаюсь). Поэтому я написал:
for (int i = 0; i > -1; i++)
{
cout << "Doing " << &argv[1][i] << endl;
if (&argv[1][i] != "\0") Size++;
else break;
}
Это прекрасно компилируется под g++, но когда я запускаю его, происходит следующее:
user@computer:~/Programming$ ./ReturnSize 12345
Doing 12345
Doing 2345
Doing 345
Doing 45
Doing 5
Doing
Doing ORBIT_SOCKETDIR=/tmp/orbit-user
И так продолжается до тех пор, пока не произойдет segfaults. Что я делаю не так? Есть ли лучший способ определения размера аргументов/доступа к отдельным элементам в аргументах?
strlen(char*)
? - person pippin1289   schedule 13.03.2014