我在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/

10-13 08:39