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