- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145
|
用这样的结构
struct
{
char name[20];
long num;
float score;
}stud;
用fwrite 读入了三个数据
zhang shan
89101
89.5
---------------
li si
89102
90.5
---------------
wang wu
89103
71.5
然后通过fseek定位后读出一个数据,程序如下: - #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- struct
- {
- char name[20];
- long num;
- float score;
- }stud;
- FILE *fp;
- int rec_no;
- long offset;
- if((fp=fopen("c:\\file1","rb"))==NULL)
- exit(1);
- printf("enter record number that you want:");
-
- scanf("%d",&rec_no); //输入偏位几位
- offset = (rec_no-1)*sizeof(stud); //得到偏移量
- if(fseek(fp,offset,0)!=0) //给fp定位
- {
- printf("can't move pointer there.\n");
- exit(1);
- }
- fread(&stud,sizeof(stud),1,fp); //读取该位置上的内容
- printf("name:%s\n",stud.name); //输出
- printf("num:%ld\n",stud.num);
- printf("score:%f\n",stud.score);
- fclose(fp);
- system("PAUSE");
- return 0;
- }
复制代码
为什么我输入6的时候,不会打印出printf("can't move pointer there.\n");这句话呢?
|
|