我是C初学者,现在正在制作一个程序。 这只是其中的一小部分。
我想,每当我输入“A组”时,程序输出“Hallo 1”和“Hallo 2”,每当我只输入“set”时,程序只应输出“Hallo 1”。 我的问题是,当我只输入“set”时,它会崩溃......我不知道为什么
N
答案 0 :(得分:0)
这是因为在下面的调用中token2为NULL:
token2 = strtok(NULL, search); // NULL when input is "set"
所以
if (strcmp(token2, "A") == 0) // Segmentation fault
会引导您出现细分错误
你可以试试这个:
if (token2 && strcmp(token2, "A") == 0)
答案 1 :(得分:0)
你可以{NULL} strcmp
使用空字符串,如果你第二次只用" strtok
"再次拨打set
,就会得到这个字符串。作为输入,因为这将给你你在那里的分段错误。
您可以先检查token2是否不是NULL
,如下所示:
if (token2)
如果token2不是NULL
,则将为true。