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一行一行读出文字,你读一行然后往另外一个文件里面写一行,跳过你要删除的行。这样你新的文件就没有了要删除的行,最后删除旧文件,把新文件重命名即可。对于小文件,干净点的方法是
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分配内存,可以申请巨大内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)