C 언어로 파일 내용 역순으로 만들기

CBeginner
지금 연습하기

소개

이 랩에서는 C 프로그래밍 언어를 사용하여 파일의 내용을 반전시키는 방법을 배웁니다.
입력 파일의 내용을 문자 단위로 읽어 들여, 역순으로 출력 파일에 다시 작성합니다.

참고: 코딩을 연습하고 gcc 를 사용하여 컴파일하고 실행하는 방법을 배우려면 직접 ~/project/main.c 파일을 생성해야 합니다.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

입력 및 출력 파일 열기

첫 번째 단계에서는 fopen() 함수를 사용하여 입력 및 출력 파일을 엽니다. 이러한 파일에 대한 두 개의 파일 포인터 (file pointer) 를 생성합니다. 하나는 입력용이고 다른 하나는 출력용입니다.

FILE *input_file, *output_file;
input_file = fopen("input.txt", "r");
output_file = fopen("output.txt", "w");

입력 파일의 문자 수 세기

이 단계에서는 fseek()ftell() 함수를 사용하여 입력 파일의 문자 수를 셉니다.
fseek(input_file, 0, SEEK_END);를 사용하여 파일 위치를 파일의 끝으로 설정하고, ftell(input_file);를 사용하여 현재 파일 위치를 가져옵니다.
이렇게 하면 입력 파일의 총 문자 수를 얻을 수 있습니다.

fseek(input_file, 0, SEEK_END);
long total_characters = ftell(input_file);

입력 파일의 문자를 역순으로 출력 파일에 복사

이제 입력 파일의 총 문자 수를 알았으므로, 문자를 역순으로 출력 파일에 복사합니다.
입력 파일을 문자 단위로 반복하고, fputc() 함수를 사용하여 각 문자를 출력 파일에 씁니다.
입력 파일의 마지막 문자부터 시작하여 fseek(input_file, -1L, SEEK_CUR);를 사용하여 뒤로 이동합니다.

for (long i = total_characters-1; i >= 0; i--) {
  fseek(input_file, i, SEEK_SET);
  char c = fgetc(input_file);
  fputc(c, output_file);
}

입력 및 출력 파일 닫기

마지막 단계에서는 fclose() 함수를 사용하여 입력 및 출력 파일을 닫습니다.

fclose(input_file);
fclose(output_file);

요약

이 랩에서는 C 프로그래밍 언어를 사용하여 파일의 내용을 역순으로 바꾸는 방법을 배웠습니다. 입력 및 출력 파일을 열고, 입력 파일의 문자 수를 세고, 문자를 역순으로 출력 파일에 복사한 다음, 입력 및 출력 파일을 닫았습니다.