Итак, у меня есть это назначение (введите строку и отобразите количество строк), где я должен объяснить, почему значения argv [0] и argv [3] меняются. Поэтому, когда вы проходите через программу (мой ввод строки «работает, как теперь коричневая корова» argv [0] начинается как моя папка каталога («/ home/013/w/wn /% $% $% #%/Assignment4/p2 "), а затем argv [3] начинается как« сейчас ». Я не понимаю, почему эти переменные меняются всякий раз, когда программа запущена, потому что строка« now »должна быть в argv [2], правильно? программа компилирует ARGV [] массив соответствует всем в конце концов, но почему не в началеargv в C++ clearup
Вот код:
#include <stdio.h>
/* print a given string and a number in a pre-determined format. */
void
print_string(int num, char* string)
{
printf("String '%d' - '%s'\n", num, string);
}
int
main(int argc, char* argv[])
{
int i;
/* check for command line arguments */
if (argc < 2) { /* 2 - 1 for program name (argv[0]) and one for a param. */
printf("Usage: %s [<string> ...]\n", argv[0]);
return(1);
}
/* loop over all strings, print them one by one */
for (argc--,argv++,i=0 ; argc > 0; argc--,argv++,i++) {
print_string(i, argv[0]); /* function call */
}
printf("Total number of strings: %d\n", i);
return 0;
}
'argv [0]' это имя файла, используемое для вызова программы, фактические аргументы командной строки хранятся в 'argv [1 ...]' –
@BenVoigt избили меня – Nacho
Они меняются во время работы программы потому что вы на самом деле изменяете свои параметры ('argc -, argv ++'), который является стилем, который обычно не одобряется. –