C读写文件--逐行输出、删除指定的一行,指定位置插入

来源:互联网 发布:矩阵的初等变换规则 编辑:程序博客网 时间:2024/05/16 03:03
#include <stdio.h>#include <string.h>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");   InsertLine("test.txt", 3, "abvccc/n");      print("test.txt");         printf("/n....................................................../n");      deleteLine("test.txt", 3);      printf("/n....................................................../n");      print("test.txt");      return   0;   } /*********************************************************************** 函数名称: InsertLine* 功能描述: 向文件指定行增加一行* 访问的表: 无* 修改的表: 无* 输入参数: char* FileName 文件    int Line       行;*     char str[1024]  要增加的内容* ***********************************************************************/void InsertLine(char* FileName, int Line, char str[256])   {      int   Lid=0;      int   MaxLine=0;      FILE*   fp=NULL;      char   Buf[1024]="";      char   tmp[500][1024]={0};         if ((fp=fopen(FileName,"r+")) == NULL)      {      printf("Can't   open   file!/n");      return;      }      while (fgets(Buf, 1024,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);   } /*********************************************************************** 函数名称: InsertLine* 功能描述: 向文件指定行增加一行* 访问的表: 无* 修改的表: 无* 输入参数: char* FileName 文件    int Line       行;*     char str[256]  要增加的内容* ***********************************************************************/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);                 }  

0 0
原创粉丝点击