簡體   English   中英

[C]-將字符串拆分為2個字符串

[英][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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM