71.11 심사문제:파일을 읽은 뒤 거꾸로 저장하기
, 김 대준님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int getFileSize(FILE* fp) {
int size;
int currPos = ftell(fp);
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, currPos, SEEK_SET);
return size;
}
int main()
{
int size;
char buffer[20] = { 0, };
FILE* fp = fopen("words.txt", "r");
size = getFileSize(fp);
while (feof != 0) {
for (int i = size; i >=0; i--) {
fseek(fp, i, SEEK_SET);
fread(buffer, sizeof(char), 1, fp);
}
}
printf("%s", buffer);
return 0;
}
실행이 안되는데 이유가 뭘까요?
Re: 71.11 심사문제:파일을 읽은 뒤 거꾸로 저장하기
, 도장_ 관리자님이 작성심사문제 해설을 보면 다음과 같은 설명이 있습니다.
char 포인터로 버퍼 buffer를 선언하고, 파일 크기만큼 동적 메모리를 할당한 뒤 파일을 읽습니다. 그리고 for 반복문에서 파일 크기 - 1부터 0까지 반복하면서 fwrite로 &buffer[i]를 sizeof(char) 1바이트 크기로 1번씩 stdout에 저장해주면 됩니다.파일 크기가 13이면 C 언어는 인덱스를 0부터 세기 때문에 인덱스는 0부터 12까지입니다.
따라서 파일 크게 - 1부터 시작해서 0까지 반복하는 반복문을 작성해야 합니다.
해설에 대부분의 경우 힌트가 있습니다. 또한, 앞에서 풀이한 연습문제, 이론의 코드를 살짝 응용하고 있기 때문에 이전 코드를 잘 응용하면 됩니다.