我在bash shell中编写了基本上与echo
命令相同的代码;但是如果将其作为参数-c
读为大写,则所有输入argv。但是,如果我输入hello -c
,则只能输出argc = 3
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
int i,j;
printf("argc = %d\n", argc);
if (!strcmp(argv[argc-1], "-c"))
for (i = 1; i < argc-1; ++i){
for (j = 0; j != '\0'; ++j)
putchar((char)toupper(argv[i][j]));
putchar('\n');
}
else for (i = 0; i < argc; ++i)
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}
最佳答案
我认为,在您的代码中
for (j = 0; j != '\0'; ++j)
有问题。您应该检查数组元素是否为null。它应该宁愿阅读
for (j = 0; argv[i][j] != '\0'; ++j)
也就是说,
putchar()
以int
作为参数,因此您无需强制转换toupper()
的返回值。关于c - vstudio中的argc和argv-返回上层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31067547/