char **数组上的C段故障

时间:2015-09-14 20:09:53

标签: c string parsing pointers strsep

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

这是一个simpleShell程序中的方法,其唯一目的是解析存储在cmd中的stdin输入,并将空格解析为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;
    }
}

1 个答案:

答案 0 :(得分:1)

您错过了两次明显的NULL检查。

  1. 检查p:remoteCommand
  2. 的空值
  3. 检查args返回值中的NULL。
  4. 否则,您可能会在任何一种情况下都尝试使用NULL指针,这会导致undefined behavior