-

파일 입출력

Patti Smith 2021. 11. 30.

스트림(stream) : 입력과 출력 데이터 바이트들의 흐름 (stdio.h)

※ 표준 입출력 스트림

stdin : 표준 입력 스트림(키보드)

stdout : 표준 출력 스트림(모니터 화면)

stderr : 표준 에러 스트림(모니터 화면)

 

파일

키보드를 통해 순간순간 입력받아 쓰는 게 아니라 보존/저장된 데이터를 사용하기 위해 파일이 필요하다.

텍스트 파일: 사람이 읽을 수 있음

 

이진 파일(이미지, 실행파일): 사람이 읽을 수 없음

 

파일 처리

파일 열기 -> 파일 읽기, 처리, 쓰기, 저장 -> 파일 닫기

 

파일 포인터 선언

파일을 카리킬 포인터 변수 선언

FILE *fp; // 하나의 스트림으로 파일을 저장

FILE *fp1, *fp2;

파일 열기 : fopen (return 타입: FILE)

FILE *fopen(const char *filename, const char *mode)

파일 열기 성공 시 FILE 구조체 변수의 주소값, 실패 시 NULL 포인터 반환

 

FILE *fp1, *fp2; // 입력스트림, 출력 스트림

fp1 = fopen("hello.text","rt"); // fp1은 입력 파일 포인터

if (fp1 == NULL){

      printf("파일 오픈 에러... !!!\n");

      return 1; // 비정상 종료, 정상적으로 종료, 0을 반환

} // 이 코드는 꼭 쓸 필요는 없지만, 잘 못 열릴 경우도 있으므로 쓰는 것이 나음

 

f2p = fopen("output.txt", "wt") // "output.txt" 없어도 됨, 없으면 새로 만들어짐

if (fp2 == NULL){

      printf("파일 출력 에러... !!!\n");

      return 1; // 비정상 종료, 정상적으로 종료, 0을 반환

} 

 

파일 읽기, 쓰기 

입력 파일 포인터에 stdin쓰면 키보드에서 입력받음

출력 파일 포인터에 stdout쓰면 화면에서 출력

 

1. 문자 단위 파일 입출력

ch = fgetc(fp1); // stdio.h

ch = getc(fp1); // stdio.h

 

fputc(ch, fp2);

putc(ch, fp2);

 

-파일의 끝까지 읽어서 쓰기

// fp1, fp2를 open

ch = getc(fp1)

while(!feof(fp1)){

      putc(ch,fp2);

      ch = getc(fp1);

}

 

while ( (ch!=getc(fp1)) != EOF )

      putc(ch, fp2);

 

2. 문자열 단위 파일 입출력

입력 

fgets(str, size, fp); // \0을 포함해서 size크기만큼 엔터가 나올 때까지 str에 넣음 단, 엔터까지 str에 넣음

 

출력

fputs(str, fp2); // str이 가리키는 곳에서 \0이 가리키는 곳까지

 

char buf[30];

fgets(buf, sizeof(buf), fp1);

 

fputs(buf, fp2); // buf에 있는 내용을 fp2에 출력하겠습니다.

 

fgets(buf, sizeof(buf), fp1);

 

데이터 타입을 지정한 입출력 (출력하는 형식을 지정할 수 있음)

입력

fscanf(fp, ...);

-> fscanf(fp1, "%d", &num);

 

출력

fprintf(fp, ....);

-> fprintf(fp1, "%d", num);

 

fscanf(fp1, "%d", &score);

while (!feof(fp1)) {

      fprintf(fp1, "%d\n", score + 9);

      fscanf(fp1, "%d", &score);

}

파일 닫기

fclose 

int fclose(FILE *stream); // 닫기도 리턴타입이 있음

 

파일 임의 접근 

fseek

파일 위치를 임의적으로 접근 할 떄 사용

 

파일 처음 이동

fseek(fp1, 

 

      

'-' 카테고리의 다른 글

7일간 진행했던 교내 해커톤 후기  (0) 2022.03.05
document 객체  (0) 2021.12.12
c언어 구조체 고급  (0) 2021.11.22
구조체  (0) 2021.11.16
자바스크립트 - 연산자, 조건문  (0) 2021.11.12

댓글