0
我有以下簡單的C代碼,用戶需要以這個特定順序提出幾個問題,其中包括「你叫什麼名字?」和「你最喜歡的顏色是什麼?」。爲了確保程序給出的答案符合相應的問題,我做strcmp。但是,當我輸入正確的問題時,它會輸出兩行?並終止程序,跳過第二個輸入,而不是用「Bob」回答。當我輸入第一個問題的錯誤輸入時,它不會跳過第二個輸入。如何正確使用strcmp?用戶輸入不匹配字符串比較,跳過第二個輸入
這裏有什麼問題,我該如何解決?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char questionOne[50];
char questionTwo[50];
scanf("%s", questionOne);
if(strcmp(questionOne, "What is your name?\n") == 0) {
printf("Bob\n");
}
else {
printf("???\n");
}
scanf("%s", questionTwo);
if(strcmp(questionTwo, "What is your favourite colour?\n") == 0) {
printf("Blue\n");
}
else {
printf("???\n");
}
return 0;
}
看到這個問題:http://stackoverflow.com/questions/1247989/how-do-you-allow-spaces-to-be-entered- using-scanf – 2014-10-08 00:22:30
'sctcmp' == 0的結果如果字符串相等,則返回負數;如果第一個字符串比第二個字符串「字面上小」,則返回負數,否則返回正數。 – user3159253 2014-10-08 00:31:30
您將需要使用'fgets()'來讀取輸入行,並附有換行符,然後可以與您的字符串(已包含換行符)進行比較。 'scanf(「%s」,questionOne);'跳過空格,製表符和換行符(統稱爲空白),讀取一個或多個非空白字符,並停止在第一個空白處掃描。 – 2014-10-08 00:35:31