C语言文件的存储与读取问题struct结构体fscanf读取,求解答希望详细。

问题出在“//输出文本内容”的函数下面!!!!该怎么办文件如果用fscanf如何读出来#include<stdio.h>#include<string.h>structs... 问题出在“//输出文本内容”的函数下面!!!!
该怎么办文件如果用fscanf如何读出来
#include<stdio.h>
#include<string.h>
struct student
{
char name[15];
char sex[5];
int year;
int number;
};

//录入数据函数
type_in()
{
int i,j;
FILE *fp;
struct student s[50];
fp=fopen("f:\\student1.txt","w");
if(fp==NULL)
{
printf("文本打开失败。");
}
printf("请输入录入学生的个数:");
scanf("%d",&i);
for(j=0;j<i;j++)
{
printf("第%d个学生的:\n",j+1);
printf("姓名:");scanf("%s",&s[j].name);getchar();//疑问如果加或不加有没有区别getchar
printf("性别:");scanf("%s",&s[j].sex);getchar();//
printf("年龄:");scanf("%d",&s[j].year);getchar();//
printf("成绩:");scanf("%d",&s[j].number);getchar();//
fprintf(fp,"姓名:%s性别:%s年龄:%d成绩:%d",s[j].name,s[j].sex,s[j].year,s[j].number);
}
fclose(fp);
//return i;
}
//输出文本内容
output(int s)
{
int i,j;
char a[300];
FILE *fpt;
fpt=fopen("f:\\student.txt","r");
if(fpt==NULL)
{
printf("文本没有创建");
}
for(i=0;i<s;i++)
{
//fscanf(fpt,"姓名:%s性别:%s年龄:%d成绩:%d",s[i].name,s[j].sex,&s[j].year,&s[j].number);//这里这么就错了求解

}

}

main()
{
int wait;
wait=type_in();
//output(wait);
//使用switch语句实现菜单选项
}
展开
 我来答
kaixingui2012
推荐于2016-05-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6342万
展开全部
fprintf(fp,"姓名:%s 性别:%s 年龄:%d 成绩:%d\n",s[j].name,s[j].sex,s[j].year,s[j].number); 写入文件时,数据间加上分隔符

fscanf(fpt, "姓名:%s 性别:%s 年龄:%d 成绩:%d\n", s[i].name, s[j].sex, &s[j].year, &s[j].number); 与上面的格式串相同

这样再试试
更多追问追答
追问

还是不行,一用vc试试看看,这个错误是语法错误?好像是,但是我找不出来

追答
#include<stdio.h>
#include<string.h>
struct student
{
char name[15];
char sex[5];
int year;
int number;
};

//录入数据函数
int type_in()
{
int i,j;
FILE *fp;
struct student s[50]; //

fp=fopen("f:\\student1.txt","w");
if(fp==NULL)
{
printf("文本打开失败。"); 
}
printf("请输入录入学生的个数:");
scanf("%d",&i);
for(j=0;j<i;j++)
{
printf("第%d个学生的:\n",j+1);
printf("姓名:");scanf("%s",&s[j].name);getchar();//疑问如果加或不加有没有区别getchar
printf("性别:");scanf("%s",&s[j].sex);getchar();//
printf("年龄:");scanf("%d",&s[j].year);getchar();//
printf("成绩:");scanf("%d",&s[j].number);getchar();//
fprintf(fp,"姓名:%s性别:%s年龄:%d成绩:%d",s[j].name,s[j].sex,s[j].year,s[j].number);
}
fclose(fp);
return i; //
}
//输出文本内容
void output(int n) //
{
int i;
struct student s[50]; //

FILE *fpt;
fpt=fopen("f:\\student.txt","r");
if(fpt==NULL)
{
printf("文本没有创建");
return ; //
}
for(i=0;i<n;i++) //
{
fscanf(fpt,"姓名:%s性别:%s年龄:%d成绩:%d",s[i].name,s[i].sex,&s[i].year,&s[i].number);
printf("姓名:%s性别:%s年龄:%d成绩:%d",s[i].name,s[i].sex,s[i].year,s[i].number);
}
fclose(fpt);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式