C언어 파일 입출력
C언어

C언어 파일 입출력

오늘은 C언어 파일 입출력을 정리 해보겠습니다.

 

파일 입출력에는 기본적인 문법들이 존재합니다.

 

 파일 입출력을 정리 해보겠습니다.

 

 

 

파일 입출력에는 기본적인 문법들이 존재합니다

 

이용할 파일을 지정할 FILE *변수

파일을 열 때 사용하는 fopen(경로, 모드)

해당 파일을 출력하는데 사용하는 fprintf

해당 파일을 입력을 받아 올 수 있는 fscanf

 

 

말로만 써놓으면 이해하기 힘드니 바로 사용 예제를 적어보겠습니다

 

fprintf 예제

 

 

 

#define CRT_SEUCRE_NO_WARNINGS // fopen을 쓰기 위해서는 필요함
#include <stdio.h>

int main(void)
{
    FILE *fpp = NULL;  // FILE 포인터 변수인 fps에 NULL 대입
    fpp = fopen("c:\\Temp_Visual_Studio\\Test.txt", "wt"); // Test라는 문서를 읽기 형식으로 열어줌

    if (fpp == NULL) // 만약 fpp에 fopen가 적용되지 않았으면 파일 입력 실패
    {
        printf("출력에 실패하였습니다.");
        return 0;
    }

    fprintf(fpp, "Hello"); // 지정한 문서에 Hello를 넣어줌

    fclose(fpp); // 작업이 끝나면 항상 파일을 닫아줘야함
    printf("완료\n");
    return 0;
}

 

하나하나 세세히 뜯어보자면

 

#define CRT_SECURE_NO_WARNINGS

fopen을 사용하기 위해서는 필요한 코드 입니다.

뺴먹지 말고 써야합니다.

 

FILE *fpp = NULL;
fpp = fopen("c:\\Temp_Visual_Studio\\Test.txt" ,"wt");

저는 c 디렉터리에 Temp_Visual_Studio라는 폴더를 미리 만들어 놓았습니다.

fopen에 첫번째 인자에는 경로가 들어갑니다. 

두번째 인자에는 (쓰기, 읽기 등등..) 모드가 들어갑니다.

 

하지만 저는 지금 파일에 원하는 문자열을 넣을 계획이기에 

wt를 사용하여 쓰기 모드로 만들겠습니다.

 

fprintf(fpp, "Hello");
fclose(fpp);

fprintf는 첫번째 인자에 처음 선언 했던 파일 포인터 변수가 들어갑니다.

두번째 인자에는 자신이 넣고 싶은 문자열이나 문자가 들어갑니다.

 

만약 자신이 파일을 활용한 작업이 끝난다면 꼭 파일을 닫아줘야 합니다.

 

그래서 fclose을 사용하는데 파일 포인터를 괄호안에 넣어줘

파일을 *꼭* 닫습니다.

 

만약 코드를 문제 없이 작성하였다면 

 

콘솔창에는 완료라는 글자와 함께 자신이 지정한 파일에 정상적으로 문자열이 출력이 됩니다.

 

fscanf 예제

 

#define CRT_SEUCRE_NO_WARNINGS // fopen을 쓰기 위해서는 필요함
#include <stdio.h>

int main(void)
{
    FILE *fpp = NULL;  

    fpp = fopen("c:\\Temp_Visual_Studio\\Test.txt", "wt"); 

    if (fpp == NULL) 
    {
        printf("출력에 실패하였습니다.");
        return 0;
    }

    fprintf(fpp, "Hello"); 

    fclose(fpp); 
    printf("완료\n");

    // 위에 했던 부분

    FILE *fps = NULL; // 파일 포인터에 NULL을 대입

    char array[100]; 

    fps = fopen("c:\\Temp_Visual_Studio\\test.txt", "rt"); // 파일을 읽기 형식으로 열기

    if (fps == NULL)
    {
        printf("출력 실패\n");
        return 0;
    }

    fscanf(fps, "%s", &array); // array 변수에 문자열을 대입한다.
    fclose(fps);
    printf("%s", array); //출력
    return 0;
}

이번에도 하나하나 살펴 보겠습니다.

 

FILE *fps = NULL;
fps = fopen("c:\\Temp_Visual_Studio\\Test.txt" , "rt");

이번에는 읽기 모드로 파일을 열겠습니다.

 

 fscanf(fps, "%s", &array);
 printf("%s", array); 

fscanf를 살펴보자면 

fscanf의 첫번째 인자는 선언한 파일 포인터가 들어갑니다.

두번째 인자에는 데이터 형식이 들어갑니다. 

아까 저는 문자열을 파일에 작성했으므로 %s를 사용했습니다.

세번째 인자에는 두번째 인자를 받을 변수를 사용합니다.

저는 문자열을 받기 위해 char형 배열 100짜리 array 변수를 선언해 두번째 인자를 받았습니다.

 

 

정상적으로 코드를 작성하였다면

코드창에 아까 작성하였던 문자열이 뜨게 됩니다.

 

 

 

오늘은 파일 입출력에 대해 정리를 해보았습니다.

다음에는 동적 메모리에 대해 정리하지 않을까 싶습니다.

 

아마도 . . ?

'C언어' 카테고리의 다른 글

C언어 공룡게임 만들기 2  (0) 2020.05.20
C언어 공룡게임 만들기  (0) 2020.05.18
C언어 동적 메모리 할당  (0) 2020.05.12
코드업 기초 100제 완성!  (0) 2020.05.09