修改这段代码并添加中文注释,使其在询问插入位置前先显示插入文件的全部内容,并使得询问插入位置时可以通过鼠标光标选择插入位置:// 插入函数 void insert_file(FILE *fp, char *fname) { char ch; long int pos; // 获取用户输入的文件名 printf("\t请输入插入的文件名:\n\t"); // 从标准输入中获取文件名 fgets(fname, MAX_LEN, stdin); // 查找'\n'字符并替换为'\0' char *pos1 = NULL; if ((pos1 = strchr(fname, '\n')) != NULL) *pos1 = '\0'; // 添加后缀名".txt",如果没有输入 if (!strstr(fname, ".txt")) strcat(fname, ".txt"); // 打开文件并判断是否打开成功 if ((fp = fopen(fname, "a+")) == NULL) { printf("\t不能打开文件!\n"); exit(0); } // 获取用户输入的插入位置 printf("\t请输入要插入的位置:\n\t"); scanf("%ld", &pos); // 消耗掉输入缓冲区中的回车符 getchar(); // 将文件指针移动到指定位置 fseek(fp, pos, SEEK_SET); // 获取用户输入的插入内容并写入文件中 printf("\t请输入要插入的内容:\n\t"); ch = getchar(); while (ch != '#') { fwrite(&ch, sizeof(char), 1, fp); ch = getchar(); } printf("\n\n"); getchar(); fclose(fp); }
时间: 2024-03-30 09:36:46 浏览: 47
void insert_file(char *fname) {
// 打开文件并判断是否打开成功
FILE *fp = fopen(fname, "a+");
if (fp == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
// 显示文件全部内容
printf("\t文件%s的全部内容如下:\n", fname);
char ch = fgetc(fp);
while (ch != EOF) {
putchar(ch);
ch = fgetc(fp);
}
// 获取用户输入的插入位置
printf("\n\t请通过鼠标光标选择要插入的位置后,按Enter键:\n\t");
getchar();
long int pos = ftell(fp);
// 将文件指针移动到指定位置
fseek(fp, pos, SEEK_SET);
// 获取用户输入的插入内容并写入文件中
printf("\t请输入要插入的内容:\n\t");
ch = getchar();
while (ch != '#') {
fputc(ch, fp);
ch = getchar();
}
printf("\n\n");
fclose(fp);
}
注:这里省略了处理用户输入文件名的部分,假设fname已经是合法的文件名。
阅读全文