用fread读取文件时出现乱码

guan_he 2009-09-25 08:40:45
在写一个比较简单的文件读取时,出现了点问题。在循环读取文件时,第二次读取的时候会在开头的地方出现部分乱码,不知道是怎么回事!请帮助!
int fileread(char *sendbuff)
{
FILE *filehandle;
filehandle=fopen("1.txt","r");
DWORD dd1=GetLastError();
int readnum;
//char sendbuff1[1024];
while(1)
{
readnum=fread(sendbuff,sizeof(char),1024,filehandle);
DWORD d=GetLastError();
sendbuff[1024]='\0';
printf("%s\n",sendbuff);
memset(sendbuff,0,sizeof(sendbuff));
if(readnum!=1024)
break;

}
return readnum;
}
void main()
{

char sendbuff[1025]="0";
int sendbuffsize=1025;
int readnum=0;

memset(sendbuff,0,sendbuffsize);
readnum=fileread(sendbuff);
...全文
1744 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwouyang 2009-09-26
  • 打赏
  • 举报
回复
关注ing

顺便看看,有多少人没看清楚题目就做答的。
pigniyan 2009-09-25
  • 打赏
  • 举报
回复
fread(sendbuff,sizeof(char),1024,filehandle);
fread读取数据块,在读数据时它不会碰到'\0'就停止,而是把'\0'一起读入sendbuff中,一直读满1024个char个字节才停止,所以你数据不够这么长的的话,就肯定会有乱码,fread不是读取一行,而是读取一块数据
diegod 2009-09-25
  • 打赏
  • 举报
回复
把文本用Notepad2另存为unicode试试呢
guan_he 2009-09-25
  • 打赏
  • 举报
回复
回复9楼:试过了,还是有乱码。
w0911h 2009-09-25
  • 打赏
  • 举报
回复
那肯定不能用一般的方法去读了,上网搜搜ANSI文件的读写吧,应该有不少资料
guan_he 2009-09-25
  • 打赏
  • 举报
回复
如果都是中文或者都是英文就不会出现乱码。
guan_he 2009-09-25
  • 打赏
  • 举报
回复
文件编码是ANSI,文件中有中文也有英文。
yunaijun 2009-09-25
  • 打赏
  • 举报
回复
xuexi
w0911h 2009-09-25
  • 打赏
  • 举报
回复
文件编码是什么,是不是有中文
guan_he 2009-09-25
  • 打赏
  • 举报
回复
用的是文本文档,一楼说的都改了,但是还是又部分乱码。
都是下一次读的开始的地方。
liem 2009-09-25
  • 打赏
  • 举报
回复
用记事本打开1.txt,另存为2.txt,保存时选择ansi格式。然后对2.txt进行读试试。
liem 2009-09-25
  • 打赏
  • 举报
回复
用记事本打开1.txt,另存为2.txt,保存时选择ansi格式。然后对2.txt进行读试试。
柯本 2009-09-25
  • 打赏
  • 举报
回复
另外
//char sendbuff1[1024];
sendbuff[1024]='\0' ; ///下标只能从0到1023,否则会引起内存错
w0911h 2009-09-25
  • 打赏
  • 举报
回复
文件是文本还是二进制的?
sendbuff[1024]='\0'; //这里不应该用1024,应该用readnum
printf("%s\n",sendbuff);
memset(sendbuff,0,sizeof(sendbuff)); //这里sizeof的结果是4,我想这不是你的本意
fancystyle 2009-09-25
  • 打赏
  • 举报
回复
print前
setlocale(LC_ALL, "chs");

试试

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧