优化这段代码,并添加中文注释:// 创建文件函数 void create_file(FILE *fp, char *fname) { // 获取用户输入的新文件名 printf("\t请输入新建的文件名:\n\t"); scanf("%s", fname); // 直接读取字符串,不需要再输入回车键 char *pos; // 查找'\n'字符 if ((pos = strchr(fname, '\n')) != NULL) { // 将'\n'替换为'\0' *pos = '\0'; } // 添加文件后缀名 ".txt" strcat(fname, ".txt"); // 定义文件路径 char path[MAX_LEN] = "C:\\Users\\dell\\Desktop\\软件设计-源文件\\A2-1\\work"; strcat(path, fname); // 创建文件并判断是否成功 if ((fp = fopen(fname, "w+")) == NULL) { printf("\t不能打开文件!\n"); exit(0); } printf("\t%s文件已经创建好!\n\n", fname); fclose(fp); }
时间: 2023-09-03 22:13:35 浏览: 86
PL0源代码.docx
// 创建文件函数
void create_file(FILE *fp, char *fname) {
// 获取用户输入的新文件名
printf("\t请输入新建的文件名:\n\t");
scanf("%s", fname); // 直接读取字符串,不需要再输入回车键
// 查找'\n'字符
char *pos = strchr(fname, '\n');
if (pos != NULL) {
// 将'\n'替换为'\0'
*pos = '\0';
}
// 添加文件后缀名 ".txt"
strcat(fname, ".txt");
// 定义文件路径
char path[MAX_LEN] = "C:\\Users\\dell\\Desktop\\软件设计-源文件\\A2-1\\work";
strcat(path, fname);
// 创建文件并判断是否成功
if ((fp = fopen(path, "w+")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t%s文件已经创建好!\n\n", fname);
fclose(fp);
}
// 优化后的代码:
void create_file(FILE *fp, char *fname) {
// 获取用户输入的新文件名
printf("\t请输入新建的文件名:\n\t");
scanf("%s", fname); // 直接读取字符串,不需要再输入回车键
// 查找并删除字符串末尾的'\n'字符
fname[strcspn(fname, "\n")] = '\0';
// 添加文件后缀名 ".txt" 并定义文件路径
char path[MAX_LEN] = "C:\\Users\\dell\\Desktop\\软件设计-源文件\\A2-1\\work\\";
strcat(path, fname);
strcat(path, ".txt");
// 创建文件并判断是否成功
if ((fp = fopen(path, "w+")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t%s 文件已创建成功!\n\n", fname);
fclose(fp);
}
// 优化后的代码说明:
// 1. 使用 strcspn 函数查找并删除字符串末尾的 '\n' 字符。
// 2. 同时添加文件后缀名 ".txt" 与定义文件路径,避免在后面重复拼接。
// 3. 修改了提示信息,使其更符合中文表达习惯。
// 4. 删除了不必要的指针定义和判断。
阅读全文