所以在我的课上,家庭作业的一部分就是有一个能够返回已经输入的角色的功能。
我尝试创建此示例代码,但它没有像我希望的那样工作。
#include <stdio.h>
char readCharacter();
int main(){
char x;
x = readCharacter();
printf("You inputted %c", x);
return 0;
}
char readCharacter(){
char z;
printf("Input character\n");
scanf("% c", &z);
return z;
}
我输入一个角色,我决定输入w,程序告诉我这个角色是一些奇怪的时髦字体。
我的作业中的实际代码,或者说是它的片段,是
#include <stdio.h> // needed by printf, scanf()
#include <ctype.h> // needed by tolower()
#include <stdlib.h> // for exit()
double readNumber(char *prompt) {
double val;
printf("%s", prompt);
scanf("% lf", &val);
//if input is not a number, exit program
if (scanf("%lf", &val) != 1) {
printf("Invalid input.\n");
exit(1);
}
return val;
}
char readYesOrNo(char* prompt) {
char yn;
printf("%s\n", prompt);
scanf("% c", &yn);
return yn;
}
int main() {
double bonus;
char yesNo;
yesNo = readYesOrNo("Did the worker get a bonus ? (y/n) ");
if (yesNo == 'y' || yesNo == 'Y') {
bonus = readNumber("Enter bonus: ");
}
else {
bonus = 0;
}
return 0;
}
在实际的家庭作业代码中,readYesOrNo函数甚至不等我输入任何东西,它只显示询问ay / n响应的提示,然后转到下一行代码,而不是等待用户输入并假设没有响应。
我不知道为什么这不起作用。
答案 0 :(得分:2)
% c
不是有效的格式说明符。但是%c
可能就是你的意思。
这一行:
scanf("% c", &z);
需要这样:
scanf("%c", &z);