$ ./主要一个
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/