다음 코드를 작성했지만 "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
이것이 단순한 연습이 아니라면, wchar_t를 사용하면 다중 바이트 인코딩 (예 : utf-8) 및 no에 대해 실패하게됩니다. 유니 코드 결합 문자가 엉망이됩니다. –