Хорошо, если ничего не передано, argc собирается 1 (argc дает количество пройденных аргументов). Это означает, что единственным элементом argv с чем-либо в нем будет argv [0] (который содержит имя программы). Это означает, что вызов argv [1] будет индексом вне диапазона, возможно, вызвавшим сбой, или если вам повезет, это будут только нежелательные данные.
if(argc == 1)
strcpy(Buff1, "default");
else if(argc == 2)
strcpy(Buff1, argv[1]);
else
//do something here if there is more than 1 argument passed to it
Также стоит отметить, что, как вы прошли пример аргументы не будут работать с тем, что вы намерены: «тест ./program Buff1 = тест» приведет к ARGC быть 4, с ARGV [0 ] является «test», argv [1] - «Buff1», argv [2] - «=», а argv [3] - «тест».
Просто звание «./program test helllooo» будет работать с программой snipit, которую я предоставил, заполняя Buff1 «helllooo». И вызов «./program test» также будет работать, заполняя Buff1 «default». Чтобы сделать что-нибудь более продвинутое, вам придется попасть в ключи командной строки (например, ./program test -b somethinghere -x somethinghere), что является просто более совершенным способом анализа argc и argv.
Вот почему 'argc' существует (вроде, поскольку' argv' заканчивается пустой строкой). – chris
Пожалуйста, не редактируйте вопрос, чтобы включить решение. Вы аннулируете ответы, и это никому не помогает. – ChrisF