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 检查。
- 根据
args
检查 NULL
- 检查
strsep()
return 值中的 NULL。
否则,您很可能会在任何一种情况下尝试 NULL 指针引用,这会导致 undefined behavior.
我不确定为什么当我的程序遇到第一个 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 检查。
- 根据
args
检查 NULL
- 检查
strsep()
return 值中的 NULL。
否则,您很可能会在任何一种情况下尝试 NULL 指针引用,这会导致 undefined behavior.