|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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里的第二个参数是“|”,你的是空格,所以用空格就行
|
|