用C语言文件读写,读出的数据与文件中的不同,错在那?是不是我的存储格式错了,还是文件读写的语句错了?

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:45:28
我文件中的数据是这样存储的:
2 2 10 10 10
2 2 10 10 10
2 2 10 10 10
2 2 2 2 2
2 2 2 2 2
要不要用逗号隔开各个数据?
我的程序如下:
#include <stdio.h>
#include <math.h>
void main()
{
int i,j;
int data[7][7];
FILE *fp;
if((fp=fopen("C:\\zuoye\\tuxiang.dat","r"))==0)
{
printf("Can not open file!\n");
exit(0);
}
while(!feof(fp))
{
for(i=0;i<5;i++)
for(j=0;j<5;j++)
fscanf(fp,"%d",&data[i][j]);
}
fclose(fp);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
printf("%d ",data[i][j]);
if(j==4) printf("\n");
}
}
那个文件“tuxiang.dat”存放了5行5列的数据,我想将他读入数组中,文件能不开,但是读出的数据不对,还有就是这个文件实干保存为.dat还是保存为.txt格式,还是他们都可以?是不是还可以保存为其他的格式呢?请各位大虾帮忙,小弟初学,还望解释的详细点,小弟不胜感激!

fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。

fscanf(文件指针,格式字符串,输入表列);
注意fscanf读取文件是以行为单位,就是说每次读取一行.
"格式字符串"
"输入表列" 都是以行为单位输入.

正确用法为
while(!feof(fp))
{
for(i=0;i<5;i++)
fscanf(fp,"%d%d%d%d%d",
&data[i][0],&data[i][1],&data[i][2],&data[i][3],&data[i][4]);
}

其实可以用fread函数,具体用法请查阅相关资料,

还有那个文件名后缀的问题,改文件名后缀并不能改变文件的内部格式,
主要是看你用什么软件创建的文件,如果是用记事本,任何后缀都可以.

没错呀
文件名是什么无所谓

你的程序能够工作呀。
至于文件后缀,.dat和.txt都可以的,只要是文本文件,文件后缀是什么无所谓的。