马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#define max 10
typedef struct student stu;
struct student
{
char num[10];
char name [20];
int s1,s2,s3;
};
void Printmnue();
void readdata(FILE *fp,stu s[max],int *n);
void writedata(FILE *fp,stu[max],int n);
int main()
{
int choice;
int i,n;
stu s[max];
char yorn;
FILE *fp;
fp=fopen("学生信息.txt","r");
if(fp==NULL)
{
printf("文件打开失败\n");
exit (0);
}
else
readdata(fp,s,&n);
for(i=0;i<n;i++)
{
printf("%s %s %d %d %d\n",s[i].num ,s[i].name ,s[i].s1 ,s[i].s2 ,s[i].s3 );
}
fclose(fp);
while (1)
{
Printmnue();
printf("请输入你的选择(1-7)\n");
scanf("%d", &choice);
switch (choice)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
{
exit(0);
break;
}
}
char YesOrNo;
YesOrNo =getchar() ;
if (YesOrNo == 'y' || YesOrNo == 'Y')
continue;
else
break;
}
system("pause");
return 0;
}
void Printmnue()
{
printf("1.添加学生数据\n");
printf("2.删除数据\n");
printf("3.排序\n");
printf("4.成绩查询\n");
printf("5.更改学生数据\n");
printf("6.显示学生信息\n");
printf("7.退出\n");
}
一个学生成绩系统的框架,学生信息数据已经在路径中提前保存好了,txt格式如下:
001 王一 98 99 85
002 王二 95 78 99
003 王三 85 86 88
004 王四 94 86 82
请问怎么调用函数readdata,能把数据对应读到结构体中,然后用printf函数打印出来呢?T T
ifstream ifs(_F_STOCK); //输入方式打开文件
char buf[1024] = {0};
ls.clear();
//取出表头
ifs.getline(buf, sizeof(buf));
while(!ifs.eof()) //没到文件结尾
{
student tmp;
ifs.getline(buf, sizeof(buf)); //读取一行
char *sst = strtok(buf, "|"); //以"|"分隔
if(sst != NULL)
{
num = sst;
}
else
{
break;
}
sst = strtok(NULL, "|");
tmp.name = sst; //名字
sst = strtok(NULL, "|");
tmp.s1 = atoi(sst);
sst = strtok(NULL, "|");
tmp.s2 = atoi(sst);
sst = strtok(NULL, "|");
tmp.s3 = atoi(sst);
ls.push_back(tmp); //放在链表的后面
}
这是我以前写的读取文件,你可以试着参考一下,我文件里各项是用“|”分隔的,所以strtok里的第二个参数是“|”,你的是空格,所以用空格就行
|