Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- C
- Callback
- json
- package
- GO 언어
- Python
- window
- go
- channel
- bitcoin
- http
- Sync
- install
- range
- 리뷰
- API
- JavaScript
- 영화
- Golang
- mutex
- tcp
- File
- write
- windows
- Linux
- 책
- go언어
- Close
- c++
- FOR
Archives
- Today
- Total
Code Habit
c/c++ 파일 읽고 쓰기 : fgets, fputs 본문
파일을 I/O를 활용하여 리스트 정보(고객 명단 등)를 간단하게 로컬에 저장하고 읽고 싶을 때 fgets/fputs 함수를 사용하면 쉽게 구현할 수 있다. fputs 함수로 파일에 한줄 단위로 문자열을 저장하고 저장된 문자열을 줄별로 다시 fgets 함수로 읽어 들일 수 있다.
참고로 필자는 개발한 프로그래밍의 블랙리스트 명단을 로컬에 저장하고 읽어들이기 위해 위의 함수들을 활용하였다.
예제이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
int main(void)
{
// 파일 쓰기모드 생성/열기
FILE *fp = fopen("test.txt", "w");
if (NULL == fp) {
return -1;
}
fputs("1 line\n", fp);
fputs("2 line\n", fp);
fputs("3 line\n", fp);
fclose(fp);
}
|
"w"-쓰기모드로 파일을 열기 간히 3줄의 문자열을 썼다. 여기서 '\n' 개행문자가 빠지면 한줄에 입력되니 주의하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <stdio.h>
int main(void)
{
// 파일 읽기모드 열기
FILE *fp2 = fopen("test.txt", "r");
if (NULL == fp) {
return -1;
}
char buffer[256] = { 0, };
while (1)
{
char* psz = fgets(buffer, 256, fp2);
if (NULL == psz) {
break;
}
printf("%s", buffer);
}
fclose(fp2);
return 0;
}
|
"r"-읽기 모드로 파일을 열고 fgets 함수로 파일의 내용을 한줄씩 읽어들인다. NULL이 반환되면 파일이 더이상 읽어들일 문자열이 없다는 것이므로 break로 while문을 빠져나오고 프로그램은 종료된다. 참고로 fgets 함수는 '\n'-줄바꿈 문자까지만 읽어들이므로 파일의 내용을 한줄씩 가져올 수 있다.