文件I/O函数:随机访问fseek()和ftell()
该程序打卡一个文件并定位到文件结尾,输出当前字符,然后向前移动知道文件开头,用ftell()
函数返回当前距文件开头的位置。
/** @Author: Your name* @Date: 2020-03-15 21:32:33* @Last Modified by: Your name* @Last Modified time: 2020-03-17 20:36:33*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SLEN 81
#define CNL_Z '\032'
int main()
{char file[SLEN];char ch;FILE *fp;long count,last;puts("Enter the number of the file to be processed:");scanf("%80s",file);if((fp=fopen(file,"rb"))==NULL){printf("reverse can't open %s\n",file);exit(EXIT_FAILURE);}fseek(fp,0L,SEEK_END);//定位到文件结尾last = ftell(fp);//查看从文件开头到文件结尾有多少字节数for(count = 1;count<=last;count++){ch = getc(fp);fseek(fp,-count,SEEK_END);//从末尾依次获取字符putchar(ch);}putchar('\n');fclose(fp);getchar();return 0;
}
分析:
fseek(fp,0L,SEEK_END);
把当前位置设置为距文件末尾0字节偏移量,也就是说把当前位置设置在文件的末尾,下一条语句:
last = ftell(fp);
把从文件开始处到文件结尾的字节数赋给last.
然后是一个for
循环:
for(count = 1;count<=last;count++){ch = getc(fp);fseek(fp,-count,SEEK_END);//从末尾依次获取字符putchar(ch);}
第一轮迭代把程序定位到文件结尾的第一个字符(即,文件的最后一个字符)。然后,程序打印该字符。下一轮迭代把程序定位到前一个字符,并打印该字符。重复这一过程直到到达文件的第一个字符,并打印。
下面介绍fseek()
和ftell()
函数:
文件I/O函数:ftell()
文件I/O函数:fseek()
发布评论