#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);
}
C读写文件--逐行输出、删除指定的一行,指定位置插入
最新推荐文章于 2024-06-27 12:02:04 发布