Я чрезвычайно новичок в Ubuntu и PuTTY и помещаю в него файл C++, но у меня проблема с моим C++ файлом. Мне нужна программа, которую нужно сделать, это взять строку, введенную с стороны Ubuntu, помещенную в программу C++ и подсчитать, сколько строк введено, и она отправляет обратно так:
./myfile Supplying arguments now
Argument #0: ./myfile
Argument #1: Supplying
Argument #2: arguments
Argument #3: now
Number of arguments printed: 4
Итак, когда я запускаю свою программу ниже, программа продолжается вечно, и я не могу ее преодолеть. Что вызывает его и почему и/или что я могу сделать, чтобы исправить эту проблему?
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int count = 0;
while (*argv[argc] != NULL)
{
count++;
}
cout << count << endl;
system("PAUSE");
return 0;
}
Ваш код является бесконечным циклом, потому что ваш во while
цикла всегда проверяет то же условие. Это потому, что argc
никогда не изменяется в вашем коде.
То, что вы хотели написать, while (*argv[count] != NULL)
. Однако то, что вы имели в виду, тоже неверно.
argc
. Поэтому лучшим решением для итерации всех аргументов командной строки является цикл for
который увеличивает count
от 0
до argc
.
argv[]
заканчивается на NULL - т.е. argv[argc] == NULL
. Не уверен, что это стандарт C, или Sus, POSIX, или что-то еще, хотя у меня нет различных документов, чтобы разобраться с этим. Возможно это не универсально верно ...
argc
никогда не меняется, так что вы всегда находитесь над одним и тем же членомargv
. Обратите особое внимание на код вашей записи.