私は次のコードを書いたが、 "abcd"と入力すると "dcb"と表示され、最初の文字はスキップされる。whileループの論理がファイル境界を越えるがfseek(f2)ファイル境界を横切ってもまだ0ではありません。負の値が返されます。Cのテキストファイルを反転する
#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);
}
'fseek(f2、-1L、2);'これをしないでください。適切なヘッダーファイル(stdio.h)をインクルードし、定数SEEK_SET、SEEK_CUR、SEEK_ENDを使用します。 –
ここで最大の間違いは*ファイル*をあたかも*文字列*のように逆転しようとしていることです。 – dasblinkenlight
これは単なる練習ではない場合は、マルチバイトエンコーディング(utf-8など)とnoの場合は失敗することに注意してください。wchar_tを使用するとUnicodeの組み合わせ文字が混乱します。 –