C语言程序设计(50)

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:08:11
有以下程序
#include <stdio.h>
{ FILE *fp; int i;
char ch[]="abcd",t;
fp=fopen("abc.dat", "wb+");
for(i=0;i<4;i++) fwrite(&ch[i],1,1,fp);
fseek(fp,-2L,SEEK_END);
fread(&t,1,1,fp);
fclose(fp);
printf("%c\n",t);
]

程序执行后的输出结果是?

d
c
b
a

why?

fseek(fp,-2L,SEEK_END);
Seek_end是指向文件的最后一个位置,即d,-2l代表往前移动一个字符。
所以输出是d c b a

运行结果是:
c
没任何问题
fseek(fp,-2L,SEEK_END)执行后读写指针在c的位置
SEEK_END 并不是指向d,而是指向了d的后面,即文件的结尾,-2L就指向了c