[英][C]-Splitting string into 2 strings
我是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為NULL:
token2 = strtok(NULL, search); // NULL when input is "set"
所以
if (strcmp(token2, "A") == 0) // Segmentation fault
會導致您出現細分錯誤
您可以嘗試以下操作:
if (token2 && strcmp(token2, "A") == 0)
您不能使用NULL字符串來進行strcmp
,這是如果您僅以“ set
”作為輸入第二次調用strtok
時所得到的結果,因為這會給您到達那里的分段錯誤。
您可以先檢查token2是否不為NULL
,如下所示:
if (token2)
如果token2不為NULL
則為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.