在这段代码的基础上增加对文本文件中的内容进行插入、删除、查找、替换的功能:#include <stdio.h> #include <stdlib.h> #include <string.h> void menu1(); void create_file(FILE *fp, char *fname); void write_file(FILE *fp, char *fname); void read_file(FILE *fp, char *fname); 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; write_file(fp, F_name); } else if (flag3 == 1) { flag3 = 0; read_file(fp, F_name); } } return 0; } void menu1() { printf("\n\n"); printf(" *************************************** \n"); printf("\t \n"); printf(" 文本编辑器 \n"); printf("\t \n "); printf(" *************************************** \n"); printf("\t 1.建立文本 \n"); printf("\t 2.编辑文本 \n"); printf("\t 3.读取文本 \n"); printf("\t 4.退出程序 \n"); printf(" *************************************** \n"); } void write_file(FILE *fp, char *fname) { char ch; printf("\t请输入编辑的文件名:\n\t"); gets(fname); if ((fp = fopen(fname, "w")) == NULL) { printf("\t不能打开文件!\n"); exit(0); } printf("\t请输入内容(以#号键结束):\n\t"); ch = getchar(); while (ch != '#') { fputc(ch, fp); ch = getchar(); } printf("\n\n"); getchar(); fclose(fp); } void create_file(FILE *fp, char *fname) { printf("\t请输入新建的文件名:\n\t"); gets(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"); gets(fname); 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); }
时间: 2023-08-14 21:05:53 浏览: 69
好的,我会根据你的要求进行回答。下面是对文本文件进行插入、删除、查找、替换的功能的实现方法:
1. 插入功能:
在已有文件的基础上插入内容,可以使用fseek()函数和fwrite()函数实现。具体步骤如下:
(1)打开文件,使用fopen()函数打开文件,模式为"a+",这样可以在文件尾部插入内容。
(2)将文件指针移到要插入的位置,可以使用fseek()函数实现。例如,要在第5个字符后插入内容,可以使用fseek(fp, 5, SEEK_SET); 来将文件指针移到第5个字符的位置。
(3)写入要插入的内容,使用fwrite()函数将要插入的内容写入文件中。
(4)关闭文件,使用fclose()函数关闭文件。
实现代码如下:
void insert_file(FILE *fp, char *fname) {
char ch;
long int pos;
printf("\t请输入插入的文件名:\n\t");
gets(fname);
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);
}
2. 删除功能:
删除文件中的内容,可以使用fseek()函数和fwrite()函数实现。具体步骤如下:
(1)打开文件,使用fopen()函数打开文件,模式为"r+",这样可以在文件中进行读写操作。
(2)将文件指针移到要删除的位置,可以使用fseek()函数实现。例如,要删除从第5个字符开始的5个字符,可以使用fseek(fp, 5, SEEK_SET); 来将文件指针移到第5个字符的位置。
(3)删除指定长度的内容,使用fwrite()函数将要删除的内容替换成空格。
(4)关闭文件,使用fclose()函数关闭文件。
实现代码如下:
void delete_file(FILE *fp, char *fname) {
long int pos, len;
printf("\t请输入删除的文件名:\n\t");
gets(fname);
if ((fp = fopen(fname, "r+")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t请输入要删除的位置:\n\t");
scanf("%ld", &pos);
printf("\t请输入要删除的长度:\n\t");
scanf("%ld", &len);
fseek(fp, pos, SEEK_SET);
for (int i = 0; i < len; i++) {
fputc(' ', fp);
}
printf("\n\n");
getchar();
fclose(fp);
}
3. 查找功能:
查找文件中的内容,可以使用fseek()函数和fgets()函数实现。具体步骤如下:
(1)打开文件,使用fopen()函数打开文件,模式为"r",这样可以只读文件中的内容。
(2)将文件指针移到要查找的位置,可以使用fseek()函数实现。例如,要查找从第5个字符开始的5个字符,可以使用fseek(fp, 5, SEEK_SET); 来将文件指针移到第5个字符的位置。
(3)读取指定长度的内容,使用fgets()函数读取指定长度的内容,然后输出。
(4)关闭文件,使用fclose()函数关闭文件。
实现代码如下:
void search_file(FILE *fp, char *fname) {
char buf[100];
long int pos, len;
printf("\t请输入查找的文件名:\n\t");
gets(fname);
if ((fp = fopen(fname, "r")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t请输入要查找的位置:\n\t");
scanf("%ld", &pos);
printf("\t请输入要查找的长度:\n\t");
scanf("%ld", &len);
fseek(fp, pos, SEEK_SET);
fgets(buf, len + 1, fp);
printf("\t查找到的内容为:%s\n\n", buf);
getchar();
fclose(fp);
}
4. 替换功能:
替换文件中的内容,可以使用fseek()函数和fwrite()函数实现。具体步骤如下:
(1)打开文件,使用fopen()函数打开文件,模式为"r+",这样可以在文件中进行读写操作。
(2)将文件指针移到要替换的位置,可以使用fseek()函数实现。例如,要从第5个字符开始替换5个字符,可以使用fseek(fp, 5, SEEK_SET); 来将文件指针移到第5个字符的位置。
(3)写入新的内容,使用fwrite()函数将要替换的内容替换成新的内容。
(4)关闭文件,使用fclose()函数关闭文件。
实现代码如下:
void replace_file(FILE *fp, char *fname) {
char ch;
long int pos, len;
printf("\t请输入替换的文件名:\n\t");
gets(fname);
if ((fp = fopen(fname, "r+")) == NULL) {
printf("\t不能打开文件!\n");
exit(0);
}
printf("\t请输入要替换的位置:\n\t");
scanf("%ld", &pos);
printf("\t请输入要替换的长度:\n\t");
scanf("%ld", &len);
fseek(fp, pos, SEEK_SET);
printf("\t请输入新的内容(以#号键结束):\n\t");
ch = getchar();
while (ch != '#') {
fwrite(&ch, sizeof(char), 1, fp);
ch = getchar();
}
for (int i = 0; i < len - 1; i++) {
fputc(' ', fp);
}
printf("\n\n");
getchar();
fclose(fp);
}
以上就是对文本文件进行插入、删除、查找、替换的功能的实现方法,你可以将这些函数添加到原代码中,然后在菜单中增加对应的选项即可。