当我的程序遇到第一个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;
}
}
答案 0 :(得分:1)
您错过了两次明显的NULL检查。
p:remoteCommand
args
返回值中的NULL。否则,您可能会在任何一种情况下都尝试使用NULL指针,这会导致undefined behavior。