我计划在以后的函数中使用read_command。我该如何做,以使我的read_command不会继续打印“ Enter a command:”。我希望将来在if语句中使用此功能。
#include <stdio.h>
#include <stdbool.h>
char read_command()
{
char command;
char result;
printf("Enter a command: ");
scanf("%c", &command);
if (command == 'I' || command == 'i' || command == 'P' || command == 'p' || command == 'D' || command == 'd' || command == 'L' || command == 'l' || command == 'Q'|| command == 'q')
result = command;
else
result = 'V';
return result;
}
void print_music_lib()
{
if (read_command == 'P'|| read_command == 'p')
{
printf("Only prints when case is P or p");
}
}
void evaluate_command()
{
while (true)
{
char valid_command = read_command();
scanf("%c", &valid_command);
switch(valid_command)
{
case 'I':
case 'i':
printf("This is the letter I or i\n");
case 'P':
case 'p':
printf("This is the letter P or p\n");
case 'D':
case 'd':
printf("This is the letter D or d\n");
case 'L':
case 'l':
printf("This is the letter L or l\n");
case 'Q':
case 'q':
printf("This is the letter Q or q\n");
//on_quit = valid_command;
}
if (valid_command == 'Q' || valid_command == 'q')
break;
//return on_quit;
}
}
int main()
{
read_command();
//printf("%c", read_command());
evaluate_command();
return 0;
}
您基本上只有两种解决方案:
不要在函数内部打印提示,而是在调用之前在调用函数中打印提示read_command
。
添加一个布尔参数,该参数告诉函数是否应打印提示。
顺便说一句,在显示的代码中您有一个逻辑错误(语法错误除外):
if (read_command() == 'P'|| read_command() == 'p')
您实际上是两次读取输入,并且当然会迫使用户两次写入输入。相反,您应该将结果存储在变量中,然后检查变量:
char result = read_command();
if (result == 'p' || result == 'P') { ... }
顺便说一句,这还将解决提示问题:一个呼叫,一个提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句