修改如下代码,使得输入文件名时可以直接输入,不需要再先输入回车键,并给这段代码加上注释:// 创建文件函数 void create_file(FILE *fp, char *fname) { // 获取用户输入的新文件名 printf("\t请输入新建的文件名:\n\t"); // 读取字符串 fgets(fname, MAX_LEN, stdin); fgets(fname, MAX_LEN, stdin); 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"; strcat(path, fname); // 创建文件并判断是否成功 if ((fp = fopen(fname, "w+")) == NULL) { printf("\t不能打开文件!\n"); exit(0); } printf("\t%s文件已经创建好!\n\n", fname); fclose(fp); }
时间: 2023-10-30 12:08:16 浏览: 72
// 创建文件函数
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";
strcat(path, fname);
// 创建文件并判断是否成功
if ((fp = fopen(fname, "w+")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t%s文件已经创建好!\n\n", fname);
fclose(fp);
}
相关问题
优化这段代码,使其输入文件名时不需要再先输入回车键,并添加中文注释:// 读取文件函数 void read_file(FILE *fp, char *fname) { char ch; // 获取用户输入的文件名 printf("\t请输入读取的文件名:\n\t"); // 读取字符串 fgets(fname, MAX_LEN, stdin); fgets(fname, MAX_LEN, stdin); char *pos; // 查找'\n'字符 if ((pos = strchr(fname, '\n')) != NULL) // 将'\n'替换为'\0' *pos = '\0'; // 打开文件并判断是否打开成功 if ((fp = fopen(fname, "r")) == NULL) { printf("\t不能打开文件!\n"); exit(0); } // 逐个读取文件中的字符并输出 printf("\t"); while ((ch = fgetc(fp)) != EOF) { putchar(ch); } printf("\t\n\n"); fclose(fp); }
// 读取文件函数
void read_file(char *fname) {
char ch;
printf("\t请输入读取的文件名:\n\t");
scanf("%s", fname); // 使用 scanf 读取文件名,避免多余的回车输入
FILE *fp; // 声明文件指针变量
fp = fopen(fname, "r"); // 打开文件并判断是否打开成功
if (fp == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t");
while ((ch = fgetc(fp)) != EOF) { // 逐个读取文件中的字符并输出
putchar(ch);
}
printf("\t\n\n");
fclose(fp);
}
// 优化建议:
// 1. 使用 scanf 读取文件名,避免多余的回车输入
// 2. 将文件指针变量的声明和文件打开放在一起,增加代码可读性,方便管理和维护
// 3. 将注释放在代码上方,方便理解函数的功能和实现思路
优化这段代码,并添加中文注释:// 创建文件函数 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); }
// 创建文件函数
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. 删除了不必要的指针定义和判断。
阅读全文