c处理文件
文件a.dic、b.dic、c.dic中分别存有张三的三科成绩,每个文件都是16字节:前8个字节存储其英文名字zhangsan,后面是一个空格,其后的2个字节存储其年龄(文本方式存储),后面也是一个空格,最后4个字节存储的是某科考试成绩(二进制方式存储)。键盘输入一个数字(1,2,3),根据输入的数字从相应的文件中读出张三的数据并显示。
数字和文件的对应关系是:
1----a.dic
2----b.dic
3----c.dic
特别注意:OJ上不允许使用fseek函数
Input
输入1、2、3中的一个
Output
输出张三的数据,每项一行
Sample Input
1
Sample Output
zhangsan
19
86
三个文件磁盘中已存在
[解决办法]
个人认为只需要读取就行了吧。用的Visual C++ 6.0,成绩不知道你是要用int还是float。
#include <stdio.h>#pragma pack(1)typedef struct StudentScore{ char name[8]; char sp1; char age[2]; char sp2; int score;}StudentScore;#pragma pack()int main(){ char filename[]="x.dic"; FILE* file; StudentScore ss; scanf("%c",&filename[0]); filename[0]+=0x30; file=fopen(filename,"r+b"); if(file) { if(sizeof(StudentScore)==fread(&ss,1,sizeof(StudentScore),file)) { ss.sp1=ss.sp2='\0'; printf("%s\n%s\n%d\n",ss.name,ss.age,ss.score); } fclose(file); } return 0;}
[解决办法]
作业?