优化这段代码: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-13 17:45:55 浏览: 55
优化建议如下:
1. 减少重复代码:可以将菜单显示和获取用户输入的代码提取为一个函数,减少代码重复,提高代码的可维护性。
2. 减少冗余变量:可以将多个 flag 变量使用一个数组代替,减少冗余变量,提高代码的简洁性。
3. 减少无用变量:可以将 count 变量删除,因为没有使用。
4. 统一变量命名:可以将 num 变量命名为 option,更加清晰明了。
优化后的代码如下:
```c
int main() {
// 设置控制台颜色
system("color F4");
// 初始化文件指针和变量
FILE *fp = NULL;
char option[100];
int flag[3] = {0};
char F_name[20];
// 进入程序循环
while (1) {
// 显示菜单并获取用户输入的选项
int selectedOption = getOption("请选择你要进行的文件操作:", 1, 4);
// 根据用户输入的选项进行相应操作
switch (selectedOption) {
case 1:
flag[0] = 1;
break;
case 2:
flag[1] = 1;
break;
case 3:
flag[2] = 1;
break;
case 4:
printf("\n\t");
exit(0);
break;
}
// 根据不同选项调用不同的函数
if (flag[0] == 1) {
flag[0] = 0;
create_file(fp, F_name);
} else if (flag[1] == 1) {
flag[1] = 0;
edit();
} else if (flag[2] == 1) {
flag[2] = 0;
read_file(fp, F_name);
}
}
return 0;
}
void edit() {
// 初始化文件指针和变量
FILE *fp = NULL;
char option[100];
int flag[5] = {0};
char F_name[20];
// 进入程序循环
while (1) {
// 显示菜单并获取用户输入的选项
int selectedOption = getOption("请选择你要进行的文件操作:", 1, 5);
// 根据用户输入的选项进行相应操作
switch (selectedOption) {
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);
}
}
}
int getOption(char* prompt, int min, int max) {
char option[100];
while (1) {
// 显示菜单并获取用户输入的选项
printf("%s", prompt);
scanf("%s", option);
getchar();
// 判断用户输入是否合法
if (strlen(option) == 1 && option[0] >= min + '0' && option[0] <= max + '0') {
return option[0] - '0';
} else {
printf("\t输入错误!请重新输入:");
}
}
}
```
阅读全文