我无法使用此程序打印正确输入的字符串。它一直告诉我,即使我有数据,我也没有输入数据。我也无法将字符串与运行我的if语句进行比较。感谢您的帮助。
#include <stdio.h>
//function prototype
void enterPerson();
void enterChoice();
//global variables
char person[30];
char choice;
int main(void) {
enterPerson();
enterChoice();
printf("Please try the Precipitation Program again.\n");
return 0;
}
void enterPerson(){
// Ask for person name
printf("Please enter name:\n");
scanf("%s", &person);
//-------------------------------------------
printf("person is %s\n", person);
//-------------------------------------------
}
void enterChoice(){
//initialize choice
choice = "M";
//ask what they choose
printf("Do you choose test or rate? (Enter T for test R for rate)\n");
scanf("%c", &choice);
printf("Xchoice is: %c\n", choice);
if ((choice == 'T')||(choice == 'R')){
printf("choice is: %c\n", choice);
}
else{
printf("Incorrect or no data was input at this time\n");
}
}
答案 0 :(得分:3)
如评论中所述,至少存在3个问题:
scanf("%s", person);
- 不要使用char数组的地址。scanf(" %c", &choice);
- 插入空格以忽略空格。choice = 'M';
- &#34; M&#34;是字符串文字,而choice
是字符。答案 1 :(得分:0)
输入缓冲区中还留有换行符(0xa)字符。您可以通过在scanf行之后打印choice
变量来查看它:
scanf("%c", &choice);
printf("c: %x\n", choice);
有几种方法可以摆脱这种情况。解释最简单here。
还有一个问题:
scanf("%s", &person);
C中的字符数组名称指向第一个字符,因此您应该使用:
进行修复 scanf("%s", person);