C 파일입출력 질문이요~~
/* a.txt에 문자열을 입력 받아서 b.txt에 그 문자열을 역으로 출력하는 프로그램을 작성해보세요.*/
#include
int main()
{
FILE *fp1, *fp2;
char buf[20];
char ch
long count, last;
if ((fp1=fopen("a.txt", "w")) == NULL);
{
printf("File Write Error1!!\n");
return 0;
}
printf("원하는 문자열을 입력 해주세요 : ");
scanf("%s", buf);
fputs(buf, fp1); // buf에 들어 있는 문자열을 a.txt 파일에 저장한다.
if ((fp2=fopen("b.txt", "w")) == NULL)
{
printf("File Write Error2!!\n");
return 0;
}
fseek(fp1, 0, SEEK_END); // 파일의 끝을 가리킨다.
// 현재의 파일 위치를 리턴한다.(파일의 끝을 가리키고 있기 때문에 총 바이트 수가 된다)
last = ftell(fp1);
for(count = last-1; count >= 0; count--) { // 역으로 문자들을 다 출력할 때까지 반복한다.
fseek(fp1, count, SEEK_SET); // 파일의 뒤로 간다.
ch = fgetc(fp1); // 문자들을 하나씩 추출하여 ch에 저장
// 여기에 무얼 추가해야 되나요?
}
// 또, ch에 저장된 문자들을 b.txt 파일에 저장해야 하는데 어떻게 해야할지를 모르겠습니다..
fclose(fp1);
fclose(fp2);
}
위의 주석에 달아놓은 것처럼 a.txt 파일에 문자열을 입력 받아서 b.txt 파일에 그 문자열을
역으로 출력하게끔 해야되는데요.
그래서 fseek(), ftell() 함수를 사용해서 파일의 끝으로 이동 후 전체 바이트 크기를 구해서
이를 for문으로 파일의 끝(EOF)-1에서 첫 번째 문자까지 역으로 문자들을 다 출력할 때까지 반복
실행하면서 fseek() 함수로 파일의 끝으로 간 후에 차례대로 구한 문자들을 ch에 저장했는데요.
여기부터 어떻게 b.txt 파일에 옴겨야 할지를 모르겠습니다 ㅠㅠ 도움좀 주세요
파일 두 개를 열어서 읽은 즉시 쓰세요.
파일 두 개를 열어서 읽은 즉시 쓰세요.
댓글 달기