#include
#include
/**
删除指定文件filepath中第n行内容
**/
void Delete(char* filepath, int n)
{
char buf[4096]; //每读取一行,都将内容放到该数组中
FILE* fp = fopen(filepath, "r"); //filepath里是原内容
FILE* fpt = fopen("temp.txt", "w"); //将filepath文件第n行内容删除后存入temp.txt中
int i = 0;
while(!feof(fp))
{
i++;
if (i == n) //删掉第n行,其实就是读到第n行时,仅仅移动一下文件指针,否则就
{ //将读取到的一行文件内容放到临时文件中temp.txt中,这就是所谓的删除
fgets(buf,sizeof(buf), fp); //必须要这一行,因为加上后文件指针将会移动
}
else
{
fgets(buf, sizeof(buf), fp);
fprintf(fpt, "%s", buf);
}
}
fclose(fp);
fclose(fpt);
fpt = fopen("temp.txt", "r");
fp = fopen(filepath, "wb"); //清空filepath文件
fclose(fp);
fp = fopen(filepath, "a");
while(!feof(fpt))
{
fgets(buf, sizeof(buf), fpt);
fprintf(fp, "%s", buf);
}
fclose(fp);
fclose(fpt);
system("ERASE temp.txt"); //删除文件temp.txt,使用该命令需要包含文件
}
void main()
{
Delete("E:/VC6练习/Test/1.txt", 3);
}