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语句实现菜单选项
} 展开
该怎么办文件如果用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语句实现菜单选项
} 展开
展开全部
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); 与上面的格式串相同
这样再试试
fscanf(fpt, "姓名:%s 性别:%s 年龄:%d 成绩:%d\n", s[i].name, s[j].sex, &s[j].year, &s[j].number); 与上面的格式串相同
这样再试试
更多追问追答
追答
#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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询