倒着输出文件的问题
问一下文件最后是啥?比如字符串最后有一个'\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);
}






