请大家帮我解决一下C方面的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 18:09:03
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char ch;
int n = 0;
fp = fopen("aa.txt","rb");
fseek(fp,0,2);
while(1)
{
if((ch = fgetc(fp)) == EOF)
{
fseek(fp,-1,1);
continue;
}
putchar(ch);
fseek(fp,-1,1);
if(ftell(fp) == -1)
{
break;
}
}
fclose(fp);
return 0;
}
我是想让这个文件里面的内容,逆序显示出来,为什么我的那们位置指针总指在一个地方不动

如上所说,fgetc位置指针向后加1,你的程序又往前退1.所以原地不动.
我改了一下,测试通过:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char ch;
int n = 0;
fp = fopen("aa.txt","rb");
fseek(fp,-1,SEEK_END);
while(1)
{
if((ch = fgetc(fp)) == EOF)
{
fseek(fp,-1,SEEK_CUR);
continue;
}
putchar(ch);
fseek(fp,-2,SEEK_CUR);
if(ftell(fp) <=0)
{
break;
}
}
putchar(fgetc(fp));
fclose(fp);
return 0;
}

fgetc每次读取后,会自动+1指向下一个字符位置,而你的程序是从当前位置-1,往复循环,自然总是那一个字符了,改变一下fseek就可以了

完全同意楼上两位的见解