C 分段故障打开 for 环路


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 循环是怎么回事吗?我得到了一个分段错误。还有更多代码,但我只是发布其中的一部分。

提前谢谢。

for(i = 1; i < 5; i++){
    if(strcmp(argv[i], "-c") == 0){

应确保 argc >= 5 ,否则strcmpi == argc时将收到NULL指针。

当你的i一直上升到四个时,你正在查看argv[i],但你只检查一个argc >= 2。我想当你有三四个参数时,你都会得到一个段错误,只有当你有五个或更多参数时,它才会起作用。

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;
    }

用它修复了它!

相关内容

  • 没有找到相关文章

最新更新