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