Печать подстрок из аргументов командной строки, в C - PullRequest
0 голосов
/ 06 декабря 2009

Почему это не работает.

printf("%s\n", argv[1][3]);

Когда это работает?

printf("%c\n", argv[1][3]);

Ответы [ 2 ]

6 голосов
/ 06 декабря 2009

Поскольку спецификатор формата %s сообщает printf, что аргумент является строкой с нулевым символом в конце. Вы даете printf один символ - четвертый символ во втором элементе массива argv.

Если вы хотите напечатать подстроку от четвертого символа до конца строки, вы тоже можете это сделать, вам просто нужно получить указатель на этот символ:

printf("%s\n", &argv[1][3]);

или, если вы предпочитаете:

printf("%s\n", argv[1] + 3);
2 голосов
/ 06 декабря 2009

"% s" в строке foramt ожидает аргумент 'char *', но вы передаете ему 'char', чтобы получить мусор (возможно, сбой). «% c» в строке формата ожидает аргумент «char», который вы и даете, поэтому он работает.

...