Я запустил следующее просто для удовольствия, но не могу объяснить результат. Предположим, что ./test WTF?
был запущен в командной строке, а полученный результат был WTF? 6 2
. Почему такое огромное расхождение между сообщаемым значением argc (2 - как и ожидалось) и strlen(*argv), которое оказалось равным 6. Я знаю, что массив строк - это не совсем то, что ищет strlen, однако, Я думал, что значение, которое он производит (если он что-то производит), будет достаточно близко к argc. Мысли?
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(int argc, char**argv)
{
for (int i = 1; i < argc; i++)
{
for (int j = 0; j < strlen(argv[i]); j++)
{
printf("%c", argv[i][j]);
}
printf(" ");
}
printf("\t%lu\t%d", strlen(*argv), argc);
printf("\n");
}
WTF?
находится вargv[1]
. - person Eugene Sh.   schedule 14.07.2017argv[0]
— это сама программа, в данном случае./test
. Однако вы не можете полагаться на это. - person Cody Gray   schedule 14.07.2017*argv
равно./test
, то есть длиной 6 символов. - person Jean-Baptiste Yunès   schedule 14.07.2017*argv
этоargv[0]
. Почему вы ожидаете какой-либо связи междуargc
иstrlen(argv[0])
? Это два совершенно не связанных между собой значения. - person AnT   schedule 14.07.2017