본문 바로가기
C 언어

C 언어 8일차 : 파일 입출력과 함수의 개념

by Detol 2022. 12. 29.

파일 입출력에 관해서 알아보겠습니다.

여태까지 저희는 코드를 이용해서 화면으로 출력만 해보았습니다.

이번에는 파일에서 읽어보고 파일에 출력을 해보겠습니다.

 

 

파일 입출력의 간단한 순서입니다.

 

 

파일 포인터를 선언한 후에 위와 같은 방식으로 fopen() 함수를 사용해 열 파일의 경로와

모드를 파일 포인터에 넣어줍니다.

 

 

파일 입출력에 관련된 함수들입니다. 파일 입력 함수는 말 그대로

파일에 입력한 값을 넣어주는 함수입니다.

파일 출력 함수는 파일에 있는 문자열을 화면에 출력시켜주는 함수입니다.

 

 

fgets의 사용방법입니다.

 

 

간단한 예제를 하나 보겠습니다.

char str[20]; //19자리까지 입력 가능(null자리)
FILE* rfp;

rfp = fopen("c://test//data1.txt""r"); //c드라이브의 test폴더에 data1.txt라는 파일을 읽기모드로 한다.

fgets(str, 20, rfp); 

printf("파일에서 읽어온 문자의 내용은 : ");
puts(str); 

fclose(rfp);

return 0;

 

data1.txt 파일에 있던 문자열을 가지고와서 그대로 출력해주는 코드입니다.

puts() 함수는 printf() 함수와 비슷한 역할로써 출력함수 역할을 수행합니다.

파일 포인터 rfp를 읽기모드로 열어주어 배열 strdata1.txt파일에 있는 정보를 읽어올 수 있게 합니다.

 

 

char str[20];
FILE* wfp;

wfp = fopen("c://test//data2.txt", "w");

printf("문자열을 입력해주세요 (최대 19자) : ");
gets(str);

fputs(str, wfp);

fclose(wfp);

return 0;

쓰기모드의 예제입니다.

쓰기모드는 앞에 작성해놓은 주소에 작성한 파일명으로 파일이 만들어집니다.

fputs() 함수를 이용해 배열 str에 입력 받은 문자열을 파일 포인터 wfp를 이용해 data2.txt에 넣어줍니다.

소스 실행 후 해당 주소로 가면 data2.txt 파일에 입력한 문자열이 들어가 있는 것을 확인하실 수 있습니다.

 

 

문제 : 5개의 숫자를 입력받아 그 숫자들의 합을 data3.txt 에 저장하라.

문제입니다. 한 번 풀어보시면 도움이 되실겁니다.

 

FILE* wfp;
int sum = 0, num;  //숫자를 입력받을 변수와 합을 저장할 변수.

wfp = fopen("c://test//data3.txt""w");  //data3.txt 파일의 주소를 파일 포인터 wfp에 저장

for (int i = 0; i < 5; i++)
{
    printf("숫자 %d : ", i + 1);
    scanf("%d", &num);
    sum = sum + num;  //숫자를 입력받아 sum에 합을 저장하는 과정을 5번 반복
}
fprintf(wfp, "합은 : %d\n", sum);  //wfp를 이용해 data3.txt 파일에 숫자들의 합 sum저장

fclose(wfp);  //파일 닫아주기

return 0;

해설입니다. 

 

 

이제 함수의 개념에 대해 알아보겠습니다.

함수란 특정 작업을 수행하는 코드이며 

크게는 C에서 제공하는 내장 함수, 사용자가 정의한 함수로 나뉩니다.

 

 

 

저희가 항상 사용하는 int main(void) {} 부분도 함수입니다.

함수의 구성요소입니다.

 

 

함수의 7가지 갈래중에 대표적인 4가지입니다.

반환형이 int로 선언된 함수의 경우, 정수 값을 반환해줘야 하기 때문에

return  ; 이 붙지만 반환형이 void로 선언된 함수의 경우 특정 값을 반환해줄 필요가 없기 때문에

return  ; 이 필요 없습니다.

 

 

예제 보겠습니다.

 

#include <stdio.h>

int sum(int x, int y)
{
    int result = x + y;
    return result;
}

int main(void)
{
    int answer = 0;
    answer = sum(3, 4);
    printf("%d\n", answer);

    return 0;
}

두 개의 매개변수의 합을 구하여 그 합을 반환하는 함수인 sum 을 만들어 메인함수에 적용한 예제입니다.

 

댓글