如何在几次错误输入后仅打印一次语句:
例如:
如果输入了 kkk,则仅会打印一次语句,而不是像下面的示例那样。
示例输出:
您是否要重试(输入 Y 继续,输入 Q 退出):kkk
错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):
例如:
如果输入了 kkk,则仅会打印一次语句,而不是像下面的示例那样。
示例输出:
您是否要重试(输入 Y 继续,输入 Q 退出):kkk
错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):错误:无效选择
您是否要重试(输入 Y 继续,输入 Q 退出):
valid=0;
while (valid==0)
{
printf("\nDo you wish to try again (Type Y to continue Q to quit:");
// print statement request for input
scanf(" %c", &choice); // get user input
choice = toupper(choice);
if((choice == 'Y') || (choice == 'Q'))
valid= 1;
else
printf("Error: Invalid choice\n"); // statement
}
choice[i]
具有负值而不是EOF
,则toupper(choice[i]);
是未定义行为。可以使用toupper((unsigned char) choice[i]);
来确保这种情况不会发生。 - chux - Reinstate Monica