怎么才能让这个不正常字符不执行任何操作,下图情况出现我的一些回车也有字符出现,并且有多少个字符打印多少个菜单的情况
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-01 10:26关注
挨踢程序员 上午好☀️☀️☀️️
本答案参考通义千问看起来你遇到了C语言输入输出(I/O)中处理非预期字符的问题,特别是在读取用户输入时。要解决这个问题,你可以使用
getchar()
函数来逐个读取字符,并检查每个字符是否是你想要的。对于菜单选项,可以只处理特定的字符(如数字或特定的菜单选项字符串)。以下是一个简单的解决方案:- 使用
while
循环和getchar()
来读取用户的输入,直到遇到预期的分隔符(例如空格、换行符或特定选项字符)。 - 在循环内部,检查读取的字符是否是菜单选项或特殊字符。如果不是,跳过它。
- 当遇到有效的选项时,存储它并结束循环。
这里是修改后的代码示例:
#include <stdio.h> void print_menu() { printf("Please choose: HH 水*水*水*米***米*水米*米*米**米米米**米*米*米*米米米米米米米米*水**米**米*平***米 *\n"); // ... 其他菜单项 } int main() { int choice; char input_char; while (1) { printf("PLaS已Ch00Se:***********************************************\n"); print_menu(); printf("PLease che005e:"); // 修改了拼写,这里仅做示例 // 读取字符并处理 while ((input_char = getchar()) != '\n' && // 换行符表示用户选择 input_char != '1' && input_char != '2' && // 假设数字是有效选项 input_char != '3' && // ... 更多选项 input_char != EOF) { // 如果不是EOF(表示输入结束),继续读取 if (isprint(input_char)) { // 如果是可打印字符(非控制字符) printf("*"); // 打印星号表示忽略该字符 } } // 处理用户选择,如转换为整数 choice = input_char - '1'; // 假设用户输入的是1-3之间的数字 if (choice >= 1 && choice <= 3) { break; // 如果选择有效,退出循环 } else { printf("Invalid choice. Please try again.\n"); } } // 用户选择了有效选项后,执行相应操作 switch (choice) { case 1: // handle query_word break; case 2: // handle history_record break; case 3: // handle quit break; default: printf("Invalid choice. Exiting...\n"); break; } return 0; }
这段代码会忽略输入中的所有非预期字符,并在用户输入有效菜单选项时结束循环。记得根据实际需求调整菜单选项和处理逻辑。
解决 无用评论 打赏 举报 - 使用
悬赏问题
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真
- ¥15 关于#c语言#的问题,请各位专家解答!