0

我不确定为什么当我的程序遇到第一if条语句时会收到分段错误。

这是 simpleShell 程序中的一种方法,其唯一目的是解析存储在中的标准输入输入,cmd并通过空格将其解析为单独的参数args

它永远不会打印if语句

void parseCmd(char* cmd, char** args)
{       
    int i;


    printf("----------> Parsed here \n");
    for(i = 0; i < MAX_LINE; i++) {
        args[i] = strsep(&cmd, " ");

        if (args[i][0] == '-') {
            printf("I was here... \n");
        }


        if(args[i] == NULL) break;
    }
}
4

1 回答 1

1

您缺少两个明显的 NULL 检查。

  1. 针对 NULL 检查args
  2. 检查strsep()返回值是否为 NULL。

否则,您很可能在任何一种情况下都尝试使用 NULL 指针引用,这会导致未定义的行为

于 2015-09-14T20:12:19.753 回答