【发布时间】:2016-10-16 00:28:26
【问题描述】:
所以在我的课堂上,家庭作业的一部分是有一个函数可以返回一个已输入的字符。
我尝试创建此示例代码,但它没有像我希望的那样工作。
#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,程序告诉我这个字符是一种奇怪的时髦字体。
我的作业中的实际代码,或者更确切地说是其中的一个 sn-p,是
#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 函数甚至不等待我输入任何内容,它只是显示提示要求 y/n 响应,然后继续下一行代码,而不是等待用户输入并假设没有回应。
我不知道为什么这不起作用。
【问题讨论】:
-
不要在 % 和 c 之间放置空格。
-
你到处注入随机空间。为什么?