C++的fread()和fputc()问题,为什么用fread()读取文件时,字节数不对,结果会增加一了一些

琴声悠扬TODO 发布于 2014/10/19 16:37
阅读 1K+
收藏 0
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
FILE *readFile, *outFile;
readFile = fopen("D:\\1.bmp", "rb");
outFile = fopen("D:\\1.txt", "w");
char nr;
int i = 0;
while (fread(&nr, sizeof(char), 1, readFile)==1)
{
    i++;
     fputc(nr,outFile);
}
cout << i << endl;
fclose(readFile);
fclose(outFile);
return 0;

}

现在我的 1.bmp文件是196662字节,输出也是196662,,,可是那个1.txt文件为什么变成了
有谁可以讲一下?

加载中
0
wei2011
wei2011
outFile = fopen("D:\\1.txt", "w");改成outFile = fopen("D:\\1.txt", "wb");试试,因为写文本文件它会做写特殊处理,比如windows下写\n,实际文件里会变成\r\n
0
中山野鬼
中山野鬼

这和c++没关系。你确保读写文件的fopen ,都是二进制的就ok啦。哈。

另外,fread用了,为什么不用fwrite。哈。

0
琴声悠扬TODO
琴声悠扬TODO

引用来自“wei2011”的评论

outFile = fopen("D:\\1.txt", "w");改成outFile = fopen("D:\\1.txt", "wb");试试,因为写文本文件它会做写特殊处理,比如windows下写\n,实际文件里会变成\r\n
谢谢了.
0
Tocy
Tocy
建议二进制文件不要和文本文件混用
琴声悠扬TODO
琴声悠扬TODO
知道了,谢谢
0
大连馋师
大连馋师
#include<iostream> 

#include<stdio.h> 

------------------------------------

C/C++严重不分啊~

琴声悠扬TODO
琴声悠扬TODO
有什么问题吗?
返回顶部
顶部