| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2821 人关注过本帖
标题:将stu_list.txt中的内容读进结构体中我用fread读总出错,求助
取消只看楼主 加入收藏
考拉的儿子
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-5-19
结帖率:0
收藏
已结贴  问题点数:5 回复次数:2 
将stu_list.txt中的内容读进结构体中我用fread读总出错,求助
我知道fread主要是用来读二进制流的数据块,但看了国外的书上说读文本流也是可以的。如果用文本流专用的fgets ,一次只能读一个字符,那不累死了?我做这个主要是做一个计算,数据很多。
  我的文本是先写好放在那的,只是用C来读这个TXT文件。结果是会有乱码,而且我明明定义了4次循环(只输出四行),但确输出了八行。大家可以运行下看看。谢谢
stu_list.txt:
Zhang  1001  19  room_101
Fun    1002  20  room_102
Tan    1003  21  room_103
Ling   1004  21  room_104



#include<stdio.h>
#define SIZE 4
struct student_type /*定义结构体数组*/
{char name[15];
 int num;
 int age;
 char addr[100];
}stud[SIZE];
void main(void)
{int i,n;
 FILE *fp; /*定义文件型指针变量*/
 fp=fopen("stu_list.txt","r");/*打开文件。其中参数为要读的文件名(包含后缀名)加路径(若不加路径则只能放在.c文件所在的文件夹下)和打开方式*/
 if(fp==NULL)/*确保文件指针不是空指针*/
 {printf("不能打开该文件\n");
  exit(0);/*关闭所有文件,终止正在执行的程序*/
 }
 for(i=0;i<SIZE;i++)
 {fread(&stud[i],sizeof(stud[i]),1,fp);/*读数据块。其中&stud[i]位置是读入数据的存放地址,&stud[i]指结构体数组的某个结构体变量stud[i]的地址;sizeof位置是要读的字节数;1位置是要读多少个size字节的数据项;fp是前面已定义的文件型指针变量*/
  printf("%s%d%d%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);/*输出结构体数组的每个元素(即结构体变量)中的每个成员的值*/
 }
 fclose(fp);
}

[ 本帖最后由 考拉的儿子 于 2011-5-19 18:00 编辑 ]
搜索更多相关主题的帖子: 结构体 二进制 
2011-05-19 16:39
考拉的儿子
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-5-19
收藏
得分:0 
我的文本是先写好的放在那的,只是用C来读这个TXT文件。结果是会有乱码,而且我明明定义了4次循环(只输出四行),但确输出了八行。你可以运行下看看
2011-05-19 17:59
考拉的儿子
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-5-19
收藏
得分:0 
回复 5楼 laoyang103
好,我来试试看。但我想知道fread错在哪了,国外的书上说是可以用来读文本的,只是一般用来读二进制流。
2011-05-19 20:47
快速回复:将stu_list.txt中的内容读进结构体中我用fread读总出错,求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012301 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved