纯粹是代码的错误 乱码跟 fwrite 和 fread 的第二个和第三个参数无关,你的代码中 fread 读出了10个字节 ,你fwrite的时候写入了 1 个字节,剩下的都丢了 ,这样生成的文件能不是乱码么?
关键要理解这两个参数的意思,写入和读出的字节数是 第二个参数乘以第三个参数,所以你fwrite的时候 第二和第三个参数用 (1,,10)(10,1)(2,5)都行,这两个参数用哪一种只影响fwrite和fread的返回值,执行成功的返回值为第三个参数。希望对你有用
do
{
memset(buffer,'\0',10);//将buffer中前10个字节替换为'\0',并返回buffer
i=fread(buffer,1,10,fp_src);
j=fwrite(buffer,1,10,fp_des);//读十个 写也要十个,你的是 1
}
fread(buffer,sizeof(char),10*sizeof(char),fp_src);试试
如果不行 你用的什么版本的linux,输入有没有中文数据,终端支持不支持中文显示,代码没问题,是linux下编码的问题