c - C 编程中字符数据类型的错误处理
问题描述
如果用户输入了无效的输入,程序将再次提问,直到用户输入有效的输入。然而,下面的代码执行它,它执行命令两次:
void error_checking(){
char input;
printf("Enter letters from a to e");
scanf("%c", &input);
if((input<102) || (input>96)){
printf("Valid input");
} else {
error_checking():
}
int main(){
error_checking();
}
解决方案
利用
scanf(" %c", &input);
^^^
代替
scanf("%c", &input);
^^
否则,函数 scanf 将读取与按下的 Enter 键对应的换行符 '\n'。
你也得到了函数的右括号。
使用像这样的幻数是个坏主意
if((input<102) || (input>96)){
至少你有写
if((input<102) && (input>96)){
推荐阅读
- javascript - JSX this.state.STATE.map 不是一个函数
- python - 使用 Numpy 的正态分布
- woocommerce - 将客户条纹支付数据从 Squarespace 迁移到 Woocommerce
- javascript - 如何根据先前的选择标签重置选择中的默认值?
- bash - 为什么 bash 将每个字符都视为一个数字
- .htaccess - 如何将某些文件的访问列入.htaccess中某些子域的白名单
- python - 每日排行榜或价格跟踪数据
- javascript - 如何将 HTMLAudioElement 音频文件上传到节点服务器?
- python - 带有 MultiIndex 的 Pandas 数据框
- javascript - 使用 JavaScript 读取和写入同一域中的文件