int main(int argc, char **argv){
// If the user does not have the right amount of arguments exit the program and display message
if(!(argc >= 2)){
printf("Usage: %s -l -c -w -L <filenames>");
exit(-1);
}
size_t iscFlag = 0;
size_t islFlag = 0;
size_t iswFlag = 0;
size_t isLFlag = 0;
FILE *src;
puts("Work work");
// For loop that checks for all the flags
int i;
for(i = 1; i < 5; i++){
if(strcmp(argv[i], "-c") == 0){
iscFlag = 1;
}else if(strcmp(argv[i], "-l") == 0){
islFlag = 1;
}else if(strcmp(argv[i], "-w") == 0){
iswFlag = 1;
}else if(strcmp(argv[i], "-L") == 0){
isLFlag = 1;
}
}
我正在尝试创建一个简单的for循环来检查标志,以便在UNIX类型的终端中重新创建wc命令。任何人都知道for循环的内容是什么?我得到了一个分段错误。有更多的代码,但我只是张贴了它的一部分。
提前致谢。
答案 0 :(得分:4)
使用
for(i = 1; i < 5; i++){
if(strcmp(argv[i], "-c") == 0){
argc >= 5
时,您应该确保strcmp
或NULL
会收到i == argc
指针。
答案 1 :(得分:1)
当argv[i]
一直到4时,您正在查看i
,但您只检查argc >= 2
。我想你只要有三个或四个参数就会得到一个段错误,它只会在你有五个或更多的时候起作用。
答案 2 :(得分:0)
for(i = 1; i < 5; i++){
if(strcmp(argv[i], "-c") == 0){
iscFlag = 1;
continue;
}else if(strcmp(argv[i], "-l") == 0){
islFlag = 1;
continue;
}else if(strcmp(argv[i], "-w") == 0){
iswFlag = 1;
continue;
}else if(strcmp(argv[i], "-L") == 0){
isLFlag = 1;
continue;
}
break;
}
修正了它!