从命令行参数打印子字符串,在C中

时间:2009-12-06 06:58:00

标签: c command-line string arguments

为什么这不起作用。

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

什么时候有效?

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

2 个答案:

答案 0 :(得分:6)

因为%s格式说明符告诉printf该参数是以空字符结尾的字符串。你给printf一个字符 - argv数组的第二个元素中的第四个字符。

如果要将字符串从第四个字符打印到字符串的末尾,也可以这样做,只需要获得指向该字符的指针:

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

或者,如果您愿意:

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

答案 1 :(得分:2)

foramt字符串中的“%s”需要一个'char *'参数,但是你传递的是'char',所以你得到垃圾(可能是崩溃)。格式字符串中的“%c”需要一个'char'参数,这是你给它的,所以它可以工作。

相关问题