读书人

关于fread()外部文件的读入。该怎么解

发布时间: 2012-04-21 14:34:44 作者: rapoo

关于fread()外部文件的读入。
#include "stdio.h"

struct paixu
{
int m;
int r1;
int r2;
int r3;
int r4;
int r5;
int r6;
int r7;
int r8;
int t;
}px[9];

void read()
{
int size;

FILE *fp;
if((fp=fopen("ziyuan.txt","r"))==NULL)
{
printf("cannot open this file\n");
}
printf("输入节点数目:");
scanf("%d",&size);
for(int i=0;i<size;i++)
{
fread(&px[i],sizeof(struct paixu),1,fp);
printf("其中的一个值为:%d\n",px[i].m);
}
fclose(fp);
}
main()
{
read();

return 0;
}
有这么一个简单的代码,用fread()出来的数据出现了问题。如下所示:
输入的节点数:9
其中一个值:154405169
其中一个值:873018122
其中一个值:873018634
其中一个值:839464714
其中一个值:10
其中一个值:0
其中一个值:0
其中一个值:0
其中一个值:0


说明:其中if((fp=fopen("ziyuan.txt","r"))==NULL)
”ziyuan.txt"是保存的文本文件:文本文件数据格式如下(是从excel表直接拷贝到TXT文件中的):
1421100106
24611001010
3400000202
4020000001
5400000003
6060200006
7220200002
8220100211


谁给解决一下,怎么就不能读正确的数据呢,文本文件的数据该怎么保存啊??


[解决办法]
既然你txt文本的格式都确定下来了,为什么不用格式化的读入呢?
fscanf()
或者可以容错的
sscanf()

--C和指针310页有跟你这个类似的例子。
fread是读二进制文件的,空格什么的都当字符读入了吧。如果说错了还请大神们指正。

读书人网 >C语言

热点推荐