簡體   English   中英

如何讓用戶輸入一個單詞進行字符串比較?

[英]How do I get the user to input a word for string comparison?

我正在運行一個 while 循環,以便用戶可以不斷輸入表達式,直到他們表示要退出程序。 我正在使用strcmp()來比較兩個字符串,因此一旦它們進入quit程序就會停止。 但是程序一直在運行,有什么想法嗎?

#include <stdio.h>
#include <string.h>
int main()
{
    int min12=0;
    char opper;
    int x=0;
    int min13;
    char *Repeatprog="cont";
    char *Repeatprog1="quit";

    while (strcmp(Repeatprog,Repeatprog1))
    {
    printf("enter the integer number \n");
    scanf( "%d %c %d", &min12, &opper, &min13);
    printf("%d %c %d\n", min12, opper, min13);

    printf("Type the word quit to end program\n");
    scanf("%s", Repeatprog);
    }
    printf("Good Bye");
    return 0;
}

永遠記住,數組指向數組第一個對象的指針 其次,在您調用scanf()您只讀取了一個字符。 不是一個完整的字符串(在 C 中用%s表示)

所以總而言之,您對scanf()調用不應該有一個指針,應該有一個string而不是一個character

scanf("%s", Repeatprog);

或者干脆

gets (Repeatprog);

編輯 :

正如評論者@EOF 所說, gets()不是一個好主意,因為它會導致Undefined Behaviour 那是因為程序可以讀取比它應該有的更多的字符並導致溢出,因此它是不安全的。

所以我推薦使用char *fgets(char *str, int n, FILE *stream)

筆記:

此外,您的代碼正在使用字符串文字。 因此,如果您嘗試更改char指針的內容,則會導致Undefined Behaviour

對於這個筆記,請感謝我下面的人[評論]。 我犯了一個巨大的錯誤,我很抱歉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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