已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
昨天关门了。
Improve this question
我是一个初学者在C.我必须写一个程序,我问用户一些问题,我必须存储在不同的变量他们的答案.如果第一个问题的答案是一个特定的字符,我不需要问下一个问题.
例如,
#include <stdio.h>
void question_1 (char* answer_1) {
printf("choose a letter\n");
scanf("%c", answer_1);
}
void question_2 (char* answer_2) {
printf("choose another letter\n");
scanf("%c", answer_2);
}
int main() {
char answer_1 = 0;
question_1(&answer_1);
printf(" %c\n", answer_1);
char answer_2 = 0;
question_2(&answer_2);
printf(" %c\n", answer_2);
return 0;
}
如果answer_1 = a,则不应询问问题_2
我想用一个if来做,但我不确定在条件中写什么,把它放在哪里,如果用第一个问题,用第二个,或者在主函数中。
1条答案
按热度按时间m3eecexj1#
如果你想让函数
question1
返回用户输入的字符,那么你不应该让参数类型为char
,而是返回类型,如下所示:另外,当使用
scanf
输入字符时,通常最好使用格式字符串" %c"
而不是"%c"
,这样所有前导空格字符都会被丢弃,包括可能是以前调用scanf
时留下的换行符。这就是为什么我在上面的代码中使用该格式字符串的原因。你应该对函数
question_2
做同样的事情,它也有同样的问题。如果你想让
question_2
只在question_1
的答案没有'a'
的值时被调用,那么你可以使用if
语句,如下所示:此程序具有以下行为:
测试1:
测试二:
但是,一般不建议使用
scanf
进行基于行的用户输入。即使使用格式字符串" %c"
而不是"%c"
,程序也会出现以下问题:如果用户输入
"bc"
作为第一个问题的答案,那么字符'c'
将被解释为第二个问题的答案,即使这个问题还没有被问到:因此,通常建议使用函数
fgets
读取整行输入。有关详细信息,请参阅以下问题:What can I use for input conversion instead of scanf?