이번 편의 목표: 책 제목과 가격을 텍스트 파일에 기록하고, 그 파일을 다시 읽어 출력합니다.
파일은 프로세스가 끝나도 남는 저장소입니다. fopen이 파일을 열고 FILE 포인터를 돌려줍니다. 열지 못하면 NULL입니다. 열었으면 작업이 끝난 뒤 fclose로 닫습니다.
#include <stdio.h>
int main(void) {
FILE *file = fopen("books.txt", "w");
char title[32];
int price = 0;
if (file == NULL) {
printf("파일을 열 수 없습니다.\n");
return 1;
}
fprintf(file, "개미 %d\n", 12000);
fclose(file);
file = fopen("books.txt", "r");
if (file == NULL) {
return 1;
}
if (fscanf(file, "%31s %d", title, &price) != 2) {
fclose(file);
return 1;
}
fclose(file);
printf("%s %d\n", title, price);
return 0;
}모드는 w가 쓰기, r이 읽기입니다. w는 같은 이름의 파일이 있으면 내용을 지우고 다시 씁니다. fscanf의 %31s는 공백 앞에서 멈추고, 배열 크기를 넘지 않게 최대 31글자를 받습니다. 성공하면 제목과 가격 두 개를 변환하므로 반환값은 2입니다.
읽기에 실패해도 파일은 닫습니다. 닫지 않은 채 return하면 버퍼에 남은 내용이 디스크에 반영되지 않을 수 있습니다.
직접 해 보기
공책과 1800을 한 줄 더 기록한 뒤, 두 줄을 차례로 읽어 출력하세요.
해설
fprintf를 두 번 호출하거나 한 형식 문자열에 두 줄을 넣습니다. fscanf가 2를 반환하는 동안 읽으면 두 권이 출력됩니다. 두 번째 읽기 전에 배열과 가격 변수를 재사용해도 됩니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.