怎么用c语言删除文件第一行

怎么用c语言删除文件第一行,第1张

#include <stdio.h>

void main() {

    FILE *fin,*fout

    int c

 

    fin=fopen("t.txt","r")

    fout=fopen("t.tmp","w")

    while (1) {

        c=fgetc(fin)

        if (EOF==c) break

        if ('\n'==c) break

    }

    if (EOF!=c)

    while (1) {

        c=fgetc(fin)

        if (EOF==c) break

        fputc(c,fout)

    }

    fclose(fin)

    fclose(fout)

    remove("t.txt")

    rename("t.tmp","t.txt")

}

最简单的就是用fgets一行一行读出文字,你读一行然后往另外一个文件里面写一行,跳过你要删除的行。这样你新的文件就没有了要删除的行,最后删除旧文件,把新文件重命名即可。

对于小文件,干净点的方法是

1. 分配大于文件长度的两块内存,取名缓冲区1和缓冲区2

2. 文件全部读入内存缓冲区1,关闭文件,然后复制到缓冲区2,复制的时候跳过要删除的内容

3. 然后重新以w方式打开文件,把缓冲区2的内容写入文件

4. 释放两个内存缓冲区

C运行库相关的函数为fopen, fclose, fread, fwrite, 分配村内malloc,释放内存free, 复制memcpy或者循环。

Windows API为CreateFile, CloseHandle, ReadFile, WriteFile。分配内存HeapAlloc, 释放内存HeapFree。大内存可以直接用Windows API VirtualAlloc和VirtualFree,这两个函数按页64k分配内存,可以申请巨大内存。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10057650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存