如何用C覆盖文件?

时间:2014-11-03 09:20:32

标签: c fwrite

我的问题非常简单。我有一个ascii或二进制文件,无论如何。现在,我希望文件中的每个字节都是0x4f,我怎么能用C做呢?问题很简单,但令人惊讶的是,互联网上没有答案。我有一个示例代码,但是,当我运行程序时有一个死循环:

#include <stdio.h>
int main ()
{
    FILE * pFile;
    pFile = fopen ("write_file_2","wb");
    unsigned char c = 0x4f;
    while(1){
        if( feof(pFile) )
            break;
        int res = fputc(c, pFile);
        printf("%d\n", res);
    }
    fclose (pFile);
    return 0;
}

我想知道为什么feof()不起作用。 谢谢!

3 个答案:

答案 0 :(得分:2)

问题是您正在使用"wb"w - 为输出操作创建空文件),更改为"rb+",并使用ftell代替{{ 1}}(看看“while( !feof( file ) )” is always wrong

feof

答案 1 :(得分:1)

一旦执行此操作pFile = fopen ("write_file_2","wb");,文件就会被打开并截断为0字节。因此pFile位于EOF,因此feof()将返回true。

您可能希望使用"r+b"打开它,使用ftell()获取大小,fseek()到第0位并开始编写设计数据。

答案 2 :(得分:0)

也许您应该首先检查文件的大小:

fseek(f, 0, SEEK_END);
lSize = ftell(f);
fseek(f, 0, SEEK_SET);

然后使用&#39; fwrite&#39;将所需的字节和字节数写入文件