免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1776 | 回复: 4
打印 上一主题 下一主题

请教:如何对结构性数据用fread和fwrite进行读写操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-16 10:23 |只看该作者 |倒序浏览
自定义一个结构,和该结构的变量,并初始化。
要求用fwrite函数将该结构写入到一个文件中,
或者以该结构为缓冲区,从一个文件中读取一个结构的数据。
如果有实例,谢谢你贴上来。

论坛徽章:
0
2 [报告]
发表于 2005-04-16 11:31 |只看该作者

请教:如何对结构性数据用fread和fwrite进行读写操作

  1. #include <stdio.h>;
  2. #include <string.h>;
  3. #define SIZE 4
  4. struct student
  5. {
  6.         char name[10];
  7.         int num, age;
  8.         char addr[15];
  9. }stdu[SIZE];
  10. void save_info()
  11. {
  12.         FILE *fp;
  13.         int i;
  14.         if((fp = fopen("stu_list" , "a+")) == NULL)
  15.         {
  16.                 perror("fopen");
  17.                 exit(1);
  18.         }
  19.         for(i = 0; i < SIZE; i++)
  20.         {
  21.                 fwrite(&stdu[i],sizeof(struct student),1,fp);
  22.                
  23.         }
  24.         fclose(fp);
  25.        
  26. }
  27. int main(int argc, char ** argv)
  28. {
  29.         int i;
  30.         FILE *fp;
  31.         fp = fopen("stu_list","r");
  32.         for(i = 0; i < SIZE; i++)
  33.         {
  34.                 scanf("%s%d%d%s",stdu[i].name,&stdu[i].num,&stdu[i].age,stdu[i].addr);
  35.                 stdu[i].name[strlen(stdu[i].name)] = 0;
  36.                 stdu[i].addr[strlen(stdu[i].addr)] = 0;
  37.         }
  38.         save_info();
  39.         fread(&stdu,sizeof(struct student),SIZE,fp);
  40.         for(i=0; i < SIZE; i++)
  41.         {
  42.                 printf("%s\t%d\t%d\t%s\n",stdu[i].name,stdu[i].num,stdu[i].age,stdu[i].addr);
  43.         }
  44.         return 0;
  45. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-04-16 11:32 |只看该作者

请教:如何对结构性数据用fread和fwrite进行读写操作

hen jian dan
jin gong can kao
you wen ti hai qing zhi zheng

论坛徽章:
0
4 [报告]
发表于 2005-04-16 11:51 |只看该作者

请教:如何对结构性数据用fread和fwrite进行读写操作

假设每一行就是一条记录,由于不同的记录在文本上显示的时候所占的字符个数是变化的,所以如果我想读取第x行记录,那么文件指针要怎么样定位?
当然可以采取fgetc()再判断是否是换行的字符的方式,
但是这样效率不高,也很复杂。
不知道有没有更好的办法?

论坛徽章:
0
5 [报告]
发表于 2005-04-16 12:02 |只看该作者

请教:如何对结构性数据用fread和fwrite进行读写操作

fgets()
read a line per time
you should use some flag like ':',","
then call  strtok(分割字符串)
System error , no chinese
-_-!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP