我是个C初学者,现在正在做一个程序。
这只是其中的一小部分。
我希望,每当我输入“set A”时,程序输出“Hallo 1”和“Hallo 2”,每当我只输入“set”时,程序只输出“Hallo 1”。
我的问题是,当我只输入“set”时,它会崩溃。。。我不知道为什么
#include <stdio.h>
#include <string.h>
int main()
{
char command[128];
printf("ep> ");
scanf(" %[^\n]%*c", command);
char *token;
char *token2;
char *search = " ";
token = strtok(command, search);
token2 = strtok(NULL, search);
if (strcmp(token, "set") == 0)
{
printf("Hallo1\n");
if (strcmp(token2, "A") == 0)
{
printf("Hallo2\n");
return;
}
return;
}
return 0;
}
最佳答案
这是因为在下面的调用中,token2为空:
token2 = strtok(NULL, search); // NULL when input is "set"
所以
if (strcmp(token2, "A") == 0) // Segmentation fault
会导致分割错误
你可以试试这个:
if (token2 && strcmp(token2, "A") == 0)
关于c - [C]-将字符串拆分为2个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34133681/