我的问题非常简单。我有一个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()不起作用。 谢谢!
答案 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;将所需的字节和字节数写入文件