我对fprintf和fwrite有疑问。 运行此代码时会写入多少字节(假设已正确设置fp)。
int i = 10000;
fprintf(fp,"%d",i);
fwrite(fp,sizeof(int),1,&i);
当我检查时分别为5个字节和9个字节。也许我错了。我以为它是4个字节,因为int。有人可以解释一下吗???感谢。
答案 0 :(得分:1)
您如何检查写入的字节数? sizeof(int)取决于平台。
以下是fwrite的函数签名。
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
fwrite从ptr指向的内存块写入一个count元素数组,每个元素的大小都是字节大小。返回值给出了写入的实际字节数。大多数情况下,这将是*计数。
类似地,fprintf返回写入/打印的字符数。
答案 1 :(得分:1)
fprintf(fp,"%d",i);
写入5个字节。它将10000写为字符串,5个字符
答案 2 :(得分:1)
fprintf
将字符串10000
(5个字节)写入文件,而fwrite
将10000
(sizeof(int)
个字节)的二进制表示写入文件