본문 바로가기

C

([C언어] 22강) 파일 입출력 - 쓰기 (fputs)

 

저번시간에 배웠던 fgets기억하시나요?

 

https://jeckl.tistory.com/34

 

([C언어] 21강) 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose)

이번 강좌에서는 파일 입출력을 배울겁니다. 파일 입출력이란 뭘까요?? 우리는 흔히 텍스트파일, 엑셀파일, 지금은 잘 모르실 제이슨파일 등등 많은 종류의 파일을 사용합니다. 이 파일들을 읽어서 프로그램에 적..

jeckl.tistory.com

이전강좌를 듣고오셨다는것을 가정하고 설명하겠습니다 꼭 보고와주세요~

 

fgets와 완전히 반대 되는 행동을 하는 함수가 fputs입니다

 

fputs의 사용법은 다음과 같습니다

 

fputs(텍스트, 파일);

이렇게 하시면 되는데요 한번 해볼까요?

 

자 우선 저번 강좌때 설명했던것처럼 fopen함수를 통해 파일을 열겠습니다

 

단! 이번강좌에서는 파일이 없는상황이라고 가정하에 설명하겠습니다

 

저번시간에 파일 열기 모드에 대해서 설명했는데요

 

파일열기모드 w는 쓰기 모드이고 파일이 없을경우 파일을 새로 생성한다고 되어있었죠!

 

w를 사용해 한번 써보도록하겠습니다!

 

 

 

우선 저번시간에도 따라하셨던 분은 이미 test.txt파일이 존재할겁니다. 지워주세요~

 

자 그럼 코드를 작성해볼까요~?

 

#pragma warning(disable:4996)
#include <stdio.h>

int main()
{
    FILE* fs = fopen("test.txt", "w");
}

 

자 fopen함수를 통해서 test.txt파일을 새로 열었습니다!

 

그럼 이번에는 "안녕하세요" 라는 문구를 한번 넣어볼게요!

 

#pragma warning(disable:4996)
#include <stdio.h>

int main()
{
    FILE* fs = fopen("test.txt", "w");
    fputs("안녕하세요",fs);
}

이 코드를 실행해볼게요!

 

어라? 아무것도 안뜨는데요?

 

당황하지마세요ㅋㅋ 화면에 출력한게 아니라 파일에 출력한거니까

 

경로에 가보면 test.txt파일이 생겨있을거에요!

 

한번 열어보죠!

 

자 성공이네요!

 

그럼 이번에는 이 파일을 닫았다가 다시 열고

 

"안녕하세요 반갑습니다" 라고 바꿔보겠습니다!

 

"안녕하세요" 문장의 뒤에 "반갑습니다"라는 문장을

 

넣어야겠네요! 그러면 어떻게 해야할까요? 처음부터 다시쓸까요?

 

뭐.. 그럴수도있겠지만 이번에는 새로작성이 아니라 "추가"를 해보도록하겠습니다

 

파일 입출력 모드 a를 쓰면 되겠네요!

 

이미 test.txt파일은 "안녕하세요" 라는 내용으로 저장되어있으니

 

기존 코드를 바꿔보겠습니다!

 

#pragma warning(disable:4996)
#include <stdio.h>

int main()
{
    FILE* fs = fopen("test.txt", "a");
    fputs(" 반갑습니다",fs);
}

 

이렇게 하면 되겠네요!

 

확인해볼까요?

 

성공입니다!

 

근데 위에 예제 코드들을 보면 다 공통적으로 제가 하면 안될 행동을 한 게 있습니다!

 

뭘까요?? 눈치채셨나요?

 

바로 fclose를 안했다는겁니다

 

fclose잊지말고 fclose까지 넣은 후에 오늘 했던 내용을 정리 하면

 

#pragma warning(disable:4996)
#include <stdio.h>

int main()
{
    FILE* fs = fopen("test.txt", "w");
    fputs("안녕하세요", fs);
    fclose(fs);
    fs = fopen("test.txt","a");
    fputs(" 반갑습니다", fs);
    fclose(fs);
}

이렇게하면 오늘의 완성코드겠네요!

 

저는 간단하게 fputs, fgets등등 강좌를 했지만

 

파일 입출력에는 문자열이 아닌 문자한글자를 입출력하는 fgetc, fputc함수와

 

fprintf, fscanf 등등 매우 다양한 함수가 존재하니 한번쯤 이곳저곳 뒤지면서

 

공부해보시는걸 추천드릴게요!

 

수고하셨고요 오늘 강좌는 여기서 마치도록 하겠습니다!