easy software

C언어 fopen fclose fputs을 이용하여 파일입출력을 해보자1 본문

C언어/FILE IO

C언어 fopen fclose fputs을 이용하여 파일입출력을 해보자1

JAVA 웹개발자 2015. 2. 12. 15:53

제 블로그 카테고리 FILE I/O 부분에서 fopen과 fclose함수를 소개해 드렸습니다.

 

이 친구들을 이용하여 간단한 예제를 해보려고 합니다.

 

문제의 조건은 코드를 통해 mystory.txt라는 파일을 만들어서,

 

이름 / 주소 / 주민등록 번호를 저장하는 프로그램을 작성해 보는 것입니다.

 

 

#include <stdio.h>

 

int main(void){
     int state;

 

     //쓰기전용 스트림 생성
     FILE* fp = fopen("mystory.txt", "wt");

     /* fopen함수는 오류발생시 NULL을 리턴하므로
     파일 개방 중 오류발생시 프로그램을 종료 */
     if (fp == NULL){
          printf("file open error!\n");
          return 1;
     }

 

     /* fputs의 두번째 인자로 fp를 전달하여
     파일에 정보를 저장 */
     fputs("홍길동\n", fp);
     fputs("서울시 송파구\n", fp);
     fputs("123456-1234567\n", fp);

 

     /* fclose함수는 종료시 오류가 발생하면
     0이 아닌 다른값을 리턴하므로 비정상 종료로 판단되면
     안내후 프로그램을 종료 */
     state = fclose(fp);
     if (state != 0){
          printf("file close error!\n");
          return 1;
     }

 

     return 0;
}

 

 

먼저 fopen함수를 이용하여 mystory.txt를 텍스트모드의 쓰기전용으로 개방합니다.

 

이 프로그램의 현재 디렉토리에 mystroy가 없으면 새로 생성할 것입니다.

 

그리고 if문을 이용하여 무언가를 검사하고 있네요.

 

fopen은 오류가 발생하면 NULL포인터를 리턴하므로 fp가 NULL이면

 

에러가 발생했다고 알려주고 프로그램을 종료시킵니다.

 

이후에 fputs함수를 이용하여 fp가 참조하는 파일에 문자열을 저장하고 있습니다.

 

fputs은 제 블로그에서 문자열을 출력하는 함수로 소개된 적이 있습니다.

 

그때는 두번째 인자로 표준 출력 스트림인 stdout을 전달했는데요,

 

fputs에 두번째 인자에 파일의 정보를 가지고 있는 FILE구조체 변수를 참조하고 있는

 

변수를 전달하게 되면, 해당 파일에 데이터를 출력, 즉 저장하게 되는 것입니다.

 

이후에 fclose를 호출하는데요, fclose는 에러가 발생하면 0이 아닌 다른값을 리턴합니다.

 

그러므로 if문에서 조건을 검사하고있습니다.

 

아주 간단한 파일 입출력 예제였습니다.

Comments