연재 완료/C Lang 이론

C언어 이론 12. 파일처리(고수준의 파일 입출력 2. 텍스트 입출력함수)

라이피 (Lypi) 2018. 6. 17. 18:09
반응형

내용 출처 : YES C (정보공학연구소 /생능출판사)

               혼자 연구하는 C/C++ (SoEn.kr /와우북스)



Ⅰ. getc(), fgetc() / putc(), fputc() //한 문자를 입출력하는 함수

   

   ① 원형

int getc(FILE* _Stream);
int putc(int _Character, FILE* _Steream);

int fgetc(FILE* _Stream);
int fputc(int _Character, FILE* _Stream);

   ② getc(FP)는 지정한 스트림으로부터 한 문자를 읽어드리고, FP를 1증가시킨다.

   ③ getc(stdin)은 키보드로부터 한 문자를 읽어들이고, getc(FP)는 FP가 가리키는 파일 스트림으로부터 한 글자를 읽어들인다.

   ④ getc(FP)의 FP가 가리키고 있는 위치가 파일의 끝이거나, 오류가 발생하면 EOF(-1)을 리턴한다.

   ⑤ putc(ch,FP)는 지정한 스트림으로 ch를 출력하고, FP를 1증가시킨다. 

   ⑥ putc(ch,stdout)은 ch를 모니터로 출력하고, putc(ch,FP)는 ch를 FP가 가리키는 파일 스트림으로 출력한다. 

   ⑦ putc(ch,FP)도 오류가 발생하면 EOF(-1)을 반환한다.

   ⑧ getc()/putc()는 매크로로, fgetc()/fputc()는 함수로 구현되었다는 것을 제외하면 완전히 동일한 기능을 수행한다.


Ⅱ. fgets() / fputs() // 문자열을 입출력하는 함수

   

   ① 원형

char* fgets (char* _buffer, int _MaxCount, FILE* _Stream);
int   fputs (char const* _Buffer, FILE* _Stream);

   ② fgets(buf, n, fp) : 

       지정한 파일포인터(*fp)가 가리키는 스트림에서 읽어들인 n-1개의 문자들의 끝에 '\0'을 추가시켜 문자열포인터 Buf에 저장한다. 

       -1개를 읽기 전에 스트림의 끝이 나타나면 거기까지 읽고 '\0'을 추가시켜 저장한다.

   ③ fputs(buf, fp) : 

       문자열 포인터 buf가 지정한 문자열을 지정한 파일포인터(*fp)가 가리키는 스트림에 출력한다.

       이 때, 마지막의 '\0'은 파일에 출력되지 않는다. 


Ⅲ. fprintf() / fscanf() // 서식화된 입출력을 하는 함수


   ① 원형

int fscanf (FILE* const _Stream, char const* const _Format, ...);
int fprintf(FILE* const _Stream, char const* const _Format, ...);


   ② fscanf(fp, format ,arg1, ...) : 

       지정한 파일포인터(*fp)가 가리키는 스트림에서 포맷에 맞춰서 데이터를 읽어들인다. (포맷 형태는 scanf와 같다.)

       데이터 중에 탭, 공백, 줄바꿈 등의 구분기호가 있으면 구분기호 다음은 잘려 입력된다.

       입력 형식 제어 문자열 내에 서식이 맞지 않는 데이터가 입력되면 실행이 중단되고 반환값으로 인수의 개수를 반환한다.

       파일의 끝이나 오류 발생시에는 EOF(-1)를 반환한다.

   ③ fprintf(fp, format [,arg1, ...]) : 

       지정한 파일포인터(*fp)가 가리키는 스트림에 포맷에 맞춰서 데이터를 출력한다. (포맷 형태는 printf와 같다.)

   ④ fprintf()로 출력한 데이터를 fscanf()로 입력할 때는 데이터의 구분을 필드의 길이로 할 것인지 구분기호로 할 것인지를 명확히 해야한다. 

   ⑤ 가능하면 필드 폭으로 지정하는 것이 좋다.



반응형