C语言文件输入输出乱码问题

xiaogg621 2009-09-23 01:51:05
/*我想将a[3][2]中的数据输入到文件"data1.txt"中,然后再从该文件中读取数据到数组b[][].
//问题是在程序运行后,我打开"data1.txt"文件,发现里面全是乱码。这是怎么回事呢?哪位高手能告诉我这是怎么回事
//*/

#include "stdio.h"

main()
{ int a[3][2]={{1,2},{3,4},{5,6}},i,j,
b[3][2]={{0},{0},{0}};
FILE *fp;
for(i=0; i<3; i++)
{
for(j=0; j<2; j++)
{ printf("%d ",a[i][j]);
}
printf("\n");
}
fp=fopen("data1.txt","w");
fwrite(&a[0][0],sizeof(int),6,fp);
rewind(fp);
fread(&b[0][0],sizeof(int),6,fp);
fclose(fp);
for(i=0; i<3; i++)
{
for(j=0; j<2; j++)
{ printf("%d ",b[i][j]);
}
printf("\n");
}
}
...全文
632 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
strayway 2009-09-24
  • 打赏
  • 举报
回复
以二进制方式写入
xiaogg621 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunny_jerry 的回复:]
二进制写入文件吧
[/Quote]
对你说的对,今天我自己调试了半天才知道
fwrite()是数据块输入方式并且默认是二进制的。所以,打开txt文件时,里面全是乱码。
fprintf(),则可以输入txt,并且打开也是输入的数。
以下是我修改后,在vc6.0调试通过的源程序.

#include "stdio.h"

main()
{
int a[3][2]={{1,2},{3,4},{5,6}},i,j, ch,
b[3][2]={{0},{0},{0}};
FILE *fp;
for(i=0; i <3; i++)
{
for(j=0; j <2; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
fp=fopen("data1.txt","w");
for(i=0; i<3; i++)
{
for(j=0; j<2; j++)
fprintf(fp,"%d\t",a[i][j]);
fprintf(fp,"%c",'\n');
}
fflush(fp);
fclose(fp);
if((fp=fopen("data1.txt","r"))==NULL) printf("Can't open the file:data1.txt!\n");
for(i=0; i<3; i++)
{
for(j=0; j<2; j++)
fscanf(fp,"%d\n",&b[i][j]);
}
for(i=0; i <3; i++)
{
for(j=0; j <2; j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
}
xiaogg621 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 highball 的回复:]
fp=fopen("data1.txt","w");
fwrite(&a[0][0],sizeof(int),6,fp);
rewind(fp);
fread(&b[0][0],sizeof(int),6,fp);
fclose(fp);

以写方式打开,却进行读操作
[/Quote]
"w"方式是创建文件,同时可以向文件里输入和输出数据。
sunny_jerry 2009-09-23
  • 打赏
  • 举报
回复
二进制写入文件吧
highball 2009-09-23
  • 打赏
  • 举报
回复
fp=fopen("data1.txt","w");
fwrite(&a[0][0],sizeof(int),6,fp);
rewind(fp);
fread(&b[0][0],sizeof(int),6,fp);
fclose(fp);

以写方式打开,却进行读操作

69,382

社区成员

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

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