c - C 中的默认命令行参数

标签 c command-line-arguments

$ ./主要一个

int main(int argc, char * argv[]) {
int i;
for(i=1;i<argc;i++){
    if(argv[i] == NULL){ //This line does not work!
        argv[i] = "Null";
    }
}
theMenu(argv[1], argv[2], argv[3], argv[4]);
return (EXIT_SUCCESS);}

在菜单函数中,当我调用 strcmp(argv[2],argv[3]);我会有段错误:((

当用户没有在 x 处输入参数时,如何使 argv[x] = "Null"?

最佳答案

CRT 不会为您未收到的参数插入 NULL 条目。它只会减少 argc 的值。如果您必须有四个参数,那么您可以在堆栈上定义自己的数组。

int main(int argc, char * argv[]) {
    char* args[4] = { 0 };
    int i;
    for(i=1;i<argc && i < 4;i++){
         args[i] = argv[i];
    }
    for(int i = 0; i < 4; i++) {
        if (args[i] == NULL)
            args[i] = "Null";
    }
    theMenu(argv[1], argv[2], argv[3], argv[4]);
    return (EXIT_SUCCESS);
}

关于c - C 中的默认命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545533/

相关文章:

c - __STDC_IEC_559__ 与现代 C 编译器的状态

c - 读取二进制文件时的最大大小是多少?

c - SD卡程序错误

python - 如何传递文件中包含的命令行参数并保留该文件的名称?

c - 在 C 中处理命令行参数时出错

c++ - 命令行测试程序 -> 只生产第一部分

c - 在 Mac OSX(以及 Mint 和 CentOS)上构建 libmemcached 时出现问题

c - C中指针内存的范围是多少

perl - 如何在 Perl 语句中获取输入文件的名称?

c++ - 如何错误处理命令行参数?