C读写文件--删除指定的一行

本文介绍了一个使用C语言实现的文件操作方法,包括如何插入和删除指定行内容。通过具体的代码示例展示了插入和删除行的具体步骤,并提供了打印文件内容的方法以便验证操作结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//C读写文件--删除指定的一行 #include #include #include void InsertLine(char* FileName, int Line, char str[256]); void deleteLine(char* FileName, int lineno) ; void print(char *filepath); int main() { print("test.txt"); printf("/n....................................................../n"); system("pause"); InsertLine("E://suworkspace//devcpp//test.txt", 3, "1111111111/n"); print("test.txt"); system("pause"); printf("/n....................................................../n"); deleteLine("test.txt", 3); printf("/n....................................................../n"); print("test.txt"); system("pause"); return 0; } /********************************************************************** * 函数名称: InsertLine * 功能描述: 向文件指定行增加一行 * 访问的表: 无 * 修改的表: 无 * 输入参数: char* FileName 文件 int Line  行; * char str[256]  要增加的内容 * ***********************************************************************/ void InsertLine(char* FileName, int Line, char str[256]) { int Lid=0; int MaxLine=0; FILE* fp=NULL; char Buf[256]=""; char tmp[50][256]={0}; if ((fp=fopen(FileName,"r+")) == NULL) { printf("Can't open file!/n"); return; } while (fgets(Buf, 256 ,fp)) { Lid++; if(Lid == Line) { strcpy(tmp[Lid++],str); } strcpy(tmp[Lid],Buf); } MaxLine=Lid; rewind(fp); for(Lid=1 ;Lid <= MaxLine;Lid++) { fputs(tmp[Lid],fp); } fclose(fp); } /********************************************************************** * 函数名称: deleteLine * 功能描述: 向文件指定行删除一行 * 访问的表: 无 * 修改的表: 无 * 输入参数: char* FileName 文件 int Line  行; * ***********************************************************************/ void deleteLine(char* FileName, int lineno) { int Lid=0; int MaxLine=0; FILE* fp=NULL; char Buf[256]=""; char tmp[20][256]={0}; char *p = Buf; if ((fp = fopen(FileName, "r+")) == NULL) { printf("Can't open file!/n"); return; } while ((p = fgets(Buf, 256, fp)) != NULL) { Lid++; if (Lid == lineno) { if ((p = fgets(Buf, 256, fp)) != NULL) { strcpy(tmp[Lid], Buf); } } else { strcpy(tmp[Lid], Buf); } } MaxLine = Lid; rewind(fp); fclose(fp); remove(FileName); // 删除原文件 if((fp = fopen(FileName, "w")) == NULL) { printf("Can't open file!/n"); return; } for(Lid = 1; Lid <= MaxLine; Lid++) { fputs(tmp[Lid], fp); } fclose(fp); } //输出到控制台 void print(char *filepath) { int nl = 0; FILE *stream; char s[256]; char *p = s; stream = fopen(filepath, "r+"); while ((p = fgets(s, 256, stream)) != NULL) { nl++; printf("Line %d: %s", nl, s); } fclose(stream); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值