char** 数组上的 C 段错误

C Segment Fault on char** Array

我不确定为什么当我的程序遇到第一个 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;
    }
}

您遗漏了两个明显的 NULL 检查。

  1. 根据 args
  2. 检查 NULL
  3. 检查 strsep() return 值中的 NULL。

否则,您很可能会在任何一种情况下尝试 NULL 指针引用,这会导致 undefined behavior.