优化这个程序,使其在调用edit后可以通过输入0来返回主程序:int main() { // 设置控制台颜色 system("color F4"); // 初始化文件指针和计数器等变量 FILE *fp = NULL; int count = 0; char num[100]; int flag1 = 0, flag2 = 0, flag3 = 0; char F_name[20]; // 进入程序循环 while (1) { // 显示菜单 menu1(); // 获取用户输入的选项 printf("\t请选择你要进行的文件操作:"); scanf("%s", num); getchar(); // 判断用户输入是否合法 while (strlen(num) > 1 || num[0] < 49 || num[0] > 52) { printf("\t输入错误!请重新输入:"); scanf("%s", num); getchar(); } // 根据用户输入的选项进行相应操作 switch (num[0]) { case '1': flag1 = 1; break; case '2': flag2 = 1; break; case '3': flag3 = 1; break; case '4': printf("\n\t"); exit(0); break; } // 根据不同选项调用不同的函数 if (flag1 == 1) { flag1 = 0; create_file(fp, F_name); } else if (flag2 == 1) { flag2 = 0; edit(); } else if (flag3 == 1) { flag3 = 0; read_file(fp, F_name); } } return 0; } void edit() { FILE *fp = NULL; int count = 0; char num[100]; char F_name[20]; int flag[5] = {0}; // 使用数组来代替多个 flag 变量 while (1) { menu12(); printf("\t请选择你要进行的文件操作:"); scanf("%s", num); getchar(); while (strlen(num) > 1 || num[0] < '1' || num[0] > '5') { // 使用字符代替数字 printf("\t输入错误!请重新输入:"); scanf("%s", num); getchar(); } switch (num[0]) { case '1': flag[0] = 1; break; case '2': flag[1] = 1; break; case '3': flag[2] = 1; break; case '4': flag[3] = 1; break; case '5': flag[4] = 1; break; } if (flag[0] == 1) { flag[0] = 0; insert_file(fp, F_name); } else if (flag[1] == 1) { flag[1] = 0; delete_file(fp, F_name); } else if (flag[2] == 1) { flag[2] = 0; search_file(fp, F_name); } else if (flag[3] == 1) { flag[3] = 0; replace_file(fp, F_name); } else if (flag[4] == 1) { flag[4] = 0; write_file(fp, F_name); } }
时间: 2024-03-14 17:49:17 浏览: 52
你可以修改 edit 函数的 while 循环,加入一个输入判断,输入 0 时返回主程序。修改后的代码如下:
void edit() {
FILE *fp = NULL;
int count = 0;
char num[100];
char F_name[20];
int flag[5] = {0};
while (1) {
menu12();
printf("\t请选择你要进行的文件操作:");
scanf("%s", num);
getchar();
// 判断用户输入是否合法,且输入 0 时返回主程序
if (strlen(num) == 1 && num[0] == '0') {
printf("\n\t已返回主程序\n");
return;
}
while (strlen(num) > 1 || num[0] < '1' || num[0] > '5') {
printf("\t输入错误!请重新输入:");
scanf("%s", num);
getchar();
}
switch (num[0]) {
case '1': flag[0] = 1; break;
case '2': flag[1] = 1; break;
case '3': flag[2] = 1; break;
case '4': flag[3] = 1; break;
case '5': flag[4] = 1; break;
}
if (flag[0] == 1) {
flag[0] = 0;
insert_file(fp, F_name);
} else if (flag[1] == 1) {
flag[1] = 0;
delete_file(fp, F_name);
} else if (flag[2] == 1) {
flag[2] = 0;
search_file(fp, F_name);
} else if (flag[3] == 1) {
flag[3] = 0;
replace_file(fp, F_name);
} else if (flag[4] == 1) {
flag[4] = 0;
write_file(fp, F_name);
}
}
}
另外,如果你能提供 create_file 和 read_file 函数的实现代码,我也可以帮你优化一下。