标题:文件能正确创建却不能读出
只看楼主
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
结帖率:91.67%
已结贴  问题点数:20 回复次数:6 
文件能正确创建却不能读出
#include <stdio.h>
#include<stdlib.h>
#define SIZE 2
struct student_type
{
   char name[10];
   int num;
   int age;
   char addr[10];
}stud[SIZE];
void save(int i)
{

 FILE *fp;
if((fp=fopen("d://stu_list","ab+"))==NULL)
 {
    printf("cant open the file");
      exit(0);
}
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void read(int i)

{
   FILE *fp;
   if((fp=fopen("d://stu_list","ab+"))==NULL)
   {
      printf("cant open the file");
      exit(0);
   }
   if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
      printf("file read error\n");
   printf("姓名%s学号%d年龄%d地址%s\n");
      fclose(fp);

}
main()

{

 int i;

 for(i=0;i<SIZE;i++)

 {printf("请输入姓名 学号 年龄 地址\n");

   scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr);

   save(i);

 }
for(i=0;i<SIZE;i++)
    read(i);

}

搜索更多相关主题的帖子: void include write 
2013-01-13 22:03
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:20 
不能读出肯定是输出的时候错了

菜鸟也疯狂
2013-01-13 22:18
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
得分:0 
回复 2楼 梁朝斌
#include <stdio.h>
#include<stdlib.h>
#define SIZE 2
struct student_type
{
   char name[10];
   int num;
   int age;
   char addr[10];
}stud[SIZE];
void save(int i)
{
FILE *fp;
if((fp=fopen("d://tu_list","ab+"))==NULL)
{
    printf("can't open the file");
      exit(0);
}
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void read(int i)
{
   FILE *fp;
   if((fp=fopen("d://tu_list","ab+"))==NULL)
   {
      printf("cant open the file");
      exit(0);
   }
   printf("测试\n");
   if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
      printf("file read error\n");
   printf("姓名%s学号%d年龄%d地址%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
      fclose(fp);
}
main()

{

int i;

for(i=0;i<SIZE;i++)

{printf("请输入姓名 学号 年龄 地址\n");

   scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr);

   save(i);

}
for(i=0;i<SIZE;i++)
    read(i);

}
我看了一下,那个输出确实有问题,不过改正后输出的却是两组第一组数据,这是怎么回事呢?
2013-01-13 22:57
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
#include <stdio.h>
#include<stdlib.h>
#define SIZE 2
struct student_type
{
   char name[10];
   int num;
   int age;
   char addr[10];
}stud[SIZE];
void save(int i)
{

FILE *fp;
if((fp=fopen("d://stu_list","ab+"))==NULL)
{
    printf("cant open the file");
      exit(0);
}
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void read(int i)

{
   FILE *fp;
   if((fp=fopen("d://stu_list","ab+"))==NULL)
   {
      printf("cant open the file");
      exit(0);
   }
   if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
      printf("file read error\n");
   printf("姓名%s学号%d年龄%d地址%s\n");//楼主这里要输出什么?怎么只有格式没有输出的内容?
      fclose(fp);

}
main()

{

int i;

for(i=0;i<SIZE;i++)

{printf("请输入姓名 学号 年龄 地址\n");

   scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr);//这里怎么都加了地址符啊

   save(i);//循环输入存储那么打开的文件的文件指针每次都在文件开头   会覆盖的啊

}
for(i=0;i<SIZE;i++)
    read(i);//楼主这样循环的读取是不是要调整文件指针呢,但是显然楼主没有调整

}


一家之言,谨供参考

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-13 23:01
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
这么快结贴啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-13 23:02
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
得分:0 
回复 5楼 yaobao
呵呵,本来以为错误找出来了,就结贴了,没想到又有新的问题了。真是谢谢啊
2013-01-13 23:05
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
问题解决就好

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-13 23:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-396485-1-1.html




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

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