1. 파일 스트림을 파일 포인터를 이용하여 생성하기

FILE* fp;

 

2. fopen() 함수를 사용하여 파일 열기

fp = fopen("master.txt", "r"); //for read
if (fp == NULL){
	printf("fail read"\n);
}

fp = fopen("master.txt", "w"); //for write
if (fp == NULL){
	printf("fail write"\n);
}

fopen() 함수를 활용하여 파일을 열때 우리는 3가지 파일 모드중 하나를 선택할 수 있다.

r : read 파일 존재한다면 오픈/ 파일 없다면 실패 있다면 데이터 보존

w : write 없다면 파일 생성, 있으면 새로 수정

a : append 없다면 파일 생성, 있으면 기존 내용 보존

 

 

3. 파일 입출력 수행하기

파일에서 문자열 읽기

while(1){
	if (feof(fp) != 0) break;
    fgets(acc_name, sizeof(acc_name), fp);
    fgets(acc_num, sizeof(acc_num), fp);
}

char* fgets(char* str, int num, FILE* stream)

str : 문자열을 저장할 공간

num : 읽을 문자열의 길이

stream : 읽을 파일포인터

 

int feof(FILE* stream)

파일의 끝에 도달했는지 여부를 확인할 때 사용

파일에 끝에 도달할 경우 0이 아닌 값을 반환

 

파일 전체 읽기

#define MAX 1000
char buffer[MAX] {0, }; //1000바이트의 문자를 담을 수 있는 buffer를 변수 0으로 초기화
fread(buffer, 1, MAX, fp);  //1바이트를 1000번, fp내용을 buffer에 저장한 후 내용을 읽는다
pritnf("%s", buffer); //buffer의 내용을 출력한다

한줄씩 읽거나 한 글자씩 읽는 함수보다 파일 전체를 읽는 fread함수의 효율이 가장 좋다.

 

 

파일 쓰기

fp = fopen("trans711.txt", "w");
fprintf(fp, acc_num);
fpinrtf(fp, acc_oper);
fprintf(fp, "%07d", amount);
fputs("\n", fp);

fprtinf(FILE* stream, const char* format, ...)

stream이 가르키는 파일에 format에 맞게 문자열 쓰기

fprintf(FILE* stream, ...)

stream이 가르키는 파일에 문자열 쓰기

리턴 값 : 파일에 성공적으로 write한 문자의 개수

fputs(text, FILE* stream)

stream이 가르키는 파일에 text 쓰기

 

[fprintf, fputs는 버퍼에다가 값을 쓴다] => 즉 파일에 바로 쓰는것이 아니라 버퍼에 write 한 이후 추후에 버퍼를 파일에 내보내는 형식이다.

fflush(FILE* stream) => fflush를 통해 버퍼에 있던 값을 파일로 내보내 버퍼를 비워주면 바로 파일에 쓰기 가능!

 

 

4. fclose() 함수를 사용하여 파일 닫기

fclose(fp);

'Language' 카테고리의 다른 글

[Python] What is Duck typing?  (1) 2023.02.06
[Python] What is Dynamic typing?  (2) 2023.01.30
[COBOL] What is COBOL ?  (0) 2023.01.10
[Java] Why use Prepared Statement  (0) 2023.01.02
[Java] How to connect SQL with JAVA  (0) 2023.01.01

+ Recent posts