萌新求助
本帖最后由 sake0126 于 2025-7-2 18:59 编辑之前完全没有接触过c语言 这两天尝试使用c语言写了一个工具箱,实际没啥难度 就是调用adb指令实现功能
遇到的问题:
工具主页
https://vip.123pan.cn/1813689450/yk6baz03t0n000d7w33h2g6opltajvckDIYPDwQ1BIFyDcxPAID1DY==.png
用户输入序号之后判断用户输入 执行对应的代码,判断写了0-9,和一个else
https://vip.123pan.cn/1813689450/ymjew503t0l000d7w32x9dtsnjxb4fk2DIYPDwQ1BIFyDcxPAID1DY==.png
输入0-9以外的选项会提示返回主页,下面返回主页我直接使用了main();返回主页后他会把”输入错误 按任意键返回主页“也输出出来
https://vip.123pan.cn/1813689450/yk6baz03t0l000d7w33fglu20jy234arDIYPDwQ1BIFyDcxPAID1DY==.png
小白不懂哪里的问题,诚心求教
main.h
void pause() {
system("pause>nl");
}
main.cpp
printf("请输入序号选择对应的功能:");
int num = 0;
scanf_s("%d", &num);
//printf("%d" ,num);
if (num=0)
{
}
else if (num == 1)
{
}
else if(num == 2)
{
}
else if (num == 3) {
}
else if (num == 4) {
}
else if (num == 5) {
}
else if (num == 6) {
}
else if (num == 7) {
}
else if (num == 8) {
}
else if (num == 9) {
}
else {
printf("输入错误 按任意键返回主页");
pause();
main();
} 根据你的描述,问题在于递归调用 `main()` 导致历史输出未被清除。以下是解决方案和代码优化建议:
### 问题分析
1. 直接递归调用 `main()` 会导致堆栈累积,每次返回都会重新显示之前的所有输出
2. 使用 `system("pause>nl")` 暂停后没有清屏
### 解决方案(使用循环代替递归)
修改你的主程序结构,用循环控制菜单显示:
#include <stdlib.h>// 包含清屏函数
int main() {
while (1) {// 主循环
system("cls");// 清屏(Windows系统)
// 显示主菜单
printf("==============工具箱主菜单==============\n");
printf(" 功能1\n");
printf(" 功能2\n");
// ...其他菜单项...
printf(" 退出\n");
printf("=======================================\n");
printf("请输入序号:");
int num;
scanf("%d", &num);// 注意:原代码用scanf_s更安全
if (num == 0) {
printf("程序已退出");
break;// 跳出循环
}
else if (num == 1) {
// 执行功能1
}
// ...其他功能判断...
else if (num == 9) {
// 执行功能9
}
else {
printf("输入错误,按任意键重新选择...");
system("pause > nul");// 等待按键
// 不调用main(),循环会自动刷新菜单
}
}
return 0;
}
### 关键修改说明
1. **循环结构**:用 `while(1)` 替代递归调用
2. **清屏操作**:每次循环开始时 `system("cls")` 清除旧内容
3. **错误处理**:
- 输入错误时仅暂停,不清屏(循环会自动刷新)
- 使用 `> nul` 隐藏暂停提示(Windows系统)
4. **退出机制**:输入0时用 `break` 退出循环
### 注意事项
1. 实际开发中应避免递归调用 `main()`
2. `system("cls")` 是Windows专属命令,Linux/Mac需改用 `system("clear")`
3. 每个功能执行后建议添加:
printf("操作完成,按任意键返回...");
system("pause > nul");
这样修改后,菜单会保持整洁,且不会出现历史信息残留的问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]