倒着输出文件的问题
问一下文件最后是啥?比如字符串最后有一个'\0'代表字符串结束,那文件最后是只有EOF吗?比如文件里存放了 hello world .那用fseek(p_file,0,SEEK_END)后,p_file这个指针是指向文件最后一个字符 d 还是指向EOF?
运行这个程序,输出有点问题,我知道问题是在那个for里,具体咋回事?
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(int argc,char* argv[]) { FILE* p_file; p_file=fopen("fccp","w"); char buf[21]; int len; while(1) { printf("input a string.up to 20 characters.input\"enter\"to end:\n"); if(fgets(buf,21,stdin)==NULL) { fprintf(stderr,"input error!\n"); exit(EXIT_FAILURE); } if(buf[0]=='\n') break; len=strlen(buf); if(buf[len-1]=='\n') buf[len-1]='\0'; fputs(buf,p_file); } fclose(p_file); p_file=fopen("fccp","rb"); fseek(p_file,0,SEEK_END); long to_head=ftell(p_file); int ch; for(long i=1;i<to_head;i+=sizeof(char)) { ch=fgetc(p_file); fputc(ch,stdout); fseek(p_file,-i,SEEK_END); } fclose(p_file); }