在C中反转文本文件

Ayu*_*ush 0 c

我写了下面的代码,但是当我输入"abcd"时它显示"dcb"并跳过第一个字符.我知道我的while循环中的逻辑穿过文件边界但是当fseek(f2)穿过文件时仍然不是0 border.It应该返回一些负值.

#include<stdio.h>

int main()
{
    FILE *f1,*f2;
    char ch;

    clrscr();

    f1=fopen("Input","w");

    while((ch=getchar())!=EOF)
            putc(ch,f1);


    fclose(f1);

    f2=fopen("Input","r");

    fseek(f2,-1L,2);

    while(ftell(f2)!=0)
    {
            ch=getc(f2);
            printf("%c",ch);
            fseek(f2,-2L,1);
    }

    fclose(f2);

    getch();
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

Jul*_*tin 5

你需要一个do-while循环,而不是while-do循环.

当ftell()返回零时你需要读取字符,但不再读取.这通常表示您需要经过底部测试的循环,而不是经过顶级测试的循环.