gpt4 book ai didi

char** 数组上的 C 段错误

转载 作者:行者123 更新时间:2023-11-30 15:17:17 25 4
gpt4 key购买 nike

我不确定为什么当我的程序命中第一个 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 检查 NULL
  2. 检查 strsep() 返回值中是否有 NULL。

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

关于char** 数组上的 C 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com