- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 파이썬
- 파이썬활용
- selenium
- 코딩시험
- 파이썬 알고리즘
- 파이썬 자료구조
- gdrive
- 크롤링
- 파이썬 강좌
- 채용문제
- 자료구조 강의
- 중간시험
- 파이썬 입문
- 대학시험
- 알고리즘
- python 중간고사
- 셀레니움
- python data structure
- 프로그래밍
- 알고리즘 강좌
- 파이썬 강의
- 면접 파이썬
- 코딩문제
- Crawling
- 자료구조
- 파이썬3
- 알고리즘 강의
- c언어
- 쉬운 파이썬
- 기말시험
반원 블로그
[C 프로그래밍] 파일 입력 함수 본문
#1
■파일과 관련된 함수
-열기 : fopen , fopen_s
-닫기 : fclose
-데이터 읽어오기 : fscanf , fscanf_s
※ _s의 사용법은 다음에 다룹시다.
파일 입출력 함수들은 stdio.h에 선언되어있다.
파일 열기에는 2가지 매개 변수가 필요하다.(파일 이름, 파일 모드) 이 중 파일모드는 읽기 용도, 쓰기 용도로 나뉘어진다.
FILE* fopen(const char* filename, const char* mode); fopen(파일이름, 파일모드);
#2
파일 입출력을 하려면 파일 포인터가 존재해야한다. 이 포인터로 대상 파일을 지정한다.
즉 fopen() 반환값을 파일포인터인 fp에 저장하며 실패시에는 NULL이 나온다.
FILE* fp; fp = fopen(“data.txt”, “r”);
#3
데이터를 읽어올 때는 fscanf를 쓴다scanf(포멧문자열, 값1, 값2, …); fscanf(파일포인터, 포멧문자열, 값1, 값2, …); 키보드로 정수 입력 받기 : scanf(“%d”, &i); 파일에서 정수 입력 받기 : fscanf(fp, “%d”, &i);
반환 성공시 변환 성공 개수, 오류 시 EOF를 반환한다.
scanf와 비교하여 공부하면 외우기 쉬울 것 같다.※fscanf에서 fscanf_s가 나온 이유는 버퍼 오버플로우 문제를 개선하기 위해서 입니다. 따라서 문자열이나 문자를 입력 받을 때는 버퍼의 크기를 전달합니다.
#4
파일 닫기는 fclose를 쓴다. 이후 적용된 파일을 가리키던 파일포인터 fp는 닫혀서 접근이 안된다.
fclose(파일포인터);
#5
실습 예제
data.txt와 c 프로그램 소스코드
10 5 4 3 2 1 9 8 7 6 5
#include <stdio.h> #include <stdlib.h> void main(){ int n; int i; File *fp; int *data; fp = fopen("data.txt","r"); //읽을 파일 이름 data.txt를 읽기 모드(r)로 열겠다. 이를 파일 포인터 fp에 저장 if(fp!=NULL){ //fp가 NULL인지 검사 fscanf(fp,"%d",&n); //fscanf로 fp파일 포인터를 통해 data.txt에서 읽기, 처음 숫자인 10을 읽음 data = (int*)malloc(sizeof(int)*n); //n개의 int 동적 배열로 메모리 할당 for(i=0;i<n; i++){ fscanf(fp,"%d",&data[i]); //n 만큼 데이터를 읽어옴 } fclose(fp);//파일 닫기 for(i=0;i<n;i++){ printf("data[%d] = %d\n", i , data[i]); } free(data);//메모리 반환 } }
#6 정리
파일 함수
▶ 파일 열기 함수 : fopen(파일이름, 파일모드);
▶ 파일 읽기 함수 : fscanf(파일포인터, 포멧문자열, 값1, 값2, …);
▶ 파일 닫기 함수 : fclose(파일포인터);
▶ fopen 함수는 파일포인터를 반환함
▶ fopen 함수가 파일 열기에 실패 시에는 NULL을 반환함
▶ fscanf, fclose 함수는 fopen에서 반환 받은 파일포인터를 인수로 받음
▶ fopen, fscanf, fclose 함수는 stdio.h 에 선언 되어 있음
▶ 파일 작업을 위해서는 파일을 열고 작업이 완료되면 닫아야 함
'2017 > C 프로그래밍' 카테고리의 다른 글
[C 프로그래밍] 구조체_1.기본이론 (0) | 2017.02.26 |
---|---|
[C 프로그래밍] 동적 메모리_4.실습_연결리스트1(Linked List) (0) | 2017.02.25 |
[C 프로그래밍] 동적 메모리_3.이론_연결리스트1(Linked List) (0) | 2017.02.24 |
[C 프로그래밍] 동적 메모리_2.sizeof 응용 (0) | 2017.02.22 |
[C 프로그래밍] 동적 메모리_1.기본이론 (0) | 2017.02.21 |
[C 프로그래밍] 파일 출력 함수_3.연결 리스트 저장, 불러오기 (0) | 2017.02.19 |
[C 프로그래밍] 파일 출력 함수_2.바이너리 모드 (0) | 2017.02.19 |
[C 프로그래밍] 파일 출력 함수_1.기본 (0) | 2017.02.17 |