fputs() 함수로 파일 쓰기
FILE * 포인터명 = fopen(파일명, 파일모드);
- 파일에서 데이터를 읽고 쓸 때는 먼저 fopen()함수로 파일을 열어서 파일 포인터를 얻어야함.
- 파일포인터는 fopen()함수를 통해 무슨 파일을 열었는지, 어디까지 읽었는지 등의 정보를 담음.

** 텍스트는 사람이 읽을 수 있는 문자열
바이너리 데이터는 컴퓨터가 읽을 수 있는 0과 1로 된 데이터
//형식
fputs(문자열, 파일포인터)
(파일 생성)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* file = fopen("C:\\\\Users\\\\홍시\\\\Desktop\\\\test1.txt", "wb");
if (file == NULL) {
printf("파일 열기 실패\\n");
return 1;
}
fputs("fputs() 함수로 글을 써볼게요.\\n", file);
fputs("잘 써지는지 확인해 주세요.\\n", file);
fclose(file);
return 0;
}
- _CRT_SECURE_NO_WARNINGS fopen() 함수가 안전하지 않음. fopen_s()를 쓰면 되지만 다른 환경에서 호환되지 않아서 _CRT_SECURE_NO_WARNINGS 정의해야함.
- fclose(): fclose()함수를 호출할 때 전달값으로 파일 포인터를 넣으면 파일 포인터가 가리키는 파일을 저장하고 닫음. fopen()으로 파일을 열었다면 반드시 fclose()로 닫을 것.

💡 #define
#define은 매크로를 정의하는 전처리기 지시문 define을 이용하면 전체 소스 코드 내 매크로를 일괄적으로 대체상수로 치환하게 되므로 필요시 대체상수의 값을 한번만 변경하면 모든 곳에 손쉽게 변경사항 적용.
fgets()함수로 파일 읽기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 10000
int main(void) {
char line[MAX];
FILE* file = fopen("C:\\\\Users\\\\홍여정\\\\Desktop\\\\test1.txt", "rb");
if (file == NULL) {
printf("파일 열기 실패\\n");
return 1;
}
while (fgets(line, MAX, file) != NULL) {
printf("%s", line);
}
fclose(file);
return 0;
}
- MAX 10000 : 코드 내에서 MAX라는 값이 사용되면 숫자 10000으로 치환하겠다는 뜻
- char line[MAX] : fgets()함수로 파일에서 값을 읽어와 값을 보관해둘 곳
- while : fgets()함수로 읽어 온 값을 NULL과 비교해서 NULL이 아니면 while 문 안 문장을 실행함.
💡 fgets()함수의 작동 방식
파일에 저장된 내용을 문자열 단위로 읽음. 한번에 읽을 수 있는 문자열의 길이만큼 읽음. 여기서는 MAX로 설정했으므로 MAX 크기만큼 읽어옴.
형식을 지정해 파일 입출력하기
//형식
fprintf(파일포인터, "서식지정자",값);
fscanf(파일포인터, "서식지정자", &변수명);
fprintf()함수로 파일 쓰기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
FILE* file = fopen("C:\\\\Users\\\\홍시\\\\Desktop\\\\test2.txt", "wb");
if (file == NULL) {
printf("파일 열기 실패\\n");
return 1;
}
fprintf(file, "%s %d %d %d %d %d %d \\n", "추첨번호", 1, 2, 3, 4, 5, 6);
fprintf(file, "%s %d\\n", "보너스 번호", 7);
fclose(file);
return 0;
}
- 파일 모드는 바이너리 데이터를 쓰는 목적(wb)으로 생성
- fprintf() 함수로 로또 추첨번호를 파일에 저장함.
fscanf() 함수로 파일 읽기

- 앞에서 입력한 로또 번호 받아오기
- fscanf() test2.txt 파일의 내용을 읽어옴. 주소를 넣어야 하므로 &num[0] ~ &num[5]로 적음
- printf()함수로 str1배열과 num[0]~num[5]에 저장된 값을 출력
'언어 > C' 카테고리의 다른 글
[코딩자율학습] 20일차 드디어 끝 그리고 후기 / 나도코딩의 C언어 입문 (0) | 2024.03.28 |
---|---|
[코딩자율학습] 19일차 프로젝트 비밀 일기 프로그램 (0) | 2024.03.28 |
[코딩자율학습] 17일차 너 내 도도독 집사가 되어라 (1) | 2024.03.26 |
[코딩자율학습] 16일차 구조체 (0) | 2024.03.25 |
[코딩자율학습] 15일차 동물카드 뒤집기 프로젝트 (0) | 2024.03.24 |