본문 바로가기

전자 공학/C언어 C++

[C언어 독학하기] 21. 파일 입출력, puts fgetc, fputc

반응형

 

 

 

안녕하세요. 취업한 공대누나입니다.

오늘은 지난 시간에 이어서 파일 입출력을 보도록 하겠습니다.

지난 포스팅에서는 파일 읽기에 대해 다뤘고, 오늘은 텍스트 파일을 작성해 보도록 하겠습니다. 

 

그 전에 우선 파일 입출력은 왜 필요한 걸까요?

우리는 프로그램을 작성하고 나서 실행 중에 데이터가 생기면 메모리에 보관해서 사용하였습니다.

하지만 메모리에 저장된 데이터는 프로그램 실행이 종료가 되면 사라지게 됩니다.

하지만 이러한 데이터를 사용해야 할 수가 있습니다.

장비의 정보에 대한 기록을 남겨야 하기도 하고 어느 곳에서 오류가 났는지 파악할 때

기록을 남겨 놓을 수도 있기 때문입니다.

 

그럼 텍스트 파일을 작성하는 것을 하기 전에 간단하게 몇 개의 함수를 소개해 드리고 시작하겠습니다.

 

 

 

1. 텍스트 파일 작성하기

 

텍스트 파일을 작성하는 순서는 파일을 읽을 때와 비슷합니다.

1) 대상 파일을 엽니다.

2) 파일로 출력을 합니다.

3) 조작이 끝나고 파일을 닫아줍니다.

 

 

fopen_s(&fp, "gdnn.txt", "w"); 라는 부분을 보면 마지막이 w로 되어 있으므로

아 쓰기 모드로 여는 것입니다. 

또한 gdnn.txt라는 파일에 무언가를 쓰게 되겠지요.

만약 gdnn.txt라는 파일이 없다면 만들어지게 됩니다.

 

 

<puts 함수>

 

여기서 puts라는 함수가 쓰이게 되는데요.

puts 함수는 문자열을 출력할 때 쓰는 함수입니다. 

입력 문자열 뒤에 개행이 추가되기 떄문에 위의 printf 처럼 따로 넣어줄 필요는 없습니다.

간단하게 소스코드에서 보시다시피

puts("입력할 문자열");

이렇게 사용하시면 됩니다.

실패하면 EOF를 반환하고 성공하게 되면 음수가 아닌 수를 반환합니다.

 

<fgetc 함수>

 

다음 while 문을 보시면 end 값이 EOF가 아닐 때 까지 계속 도는 것을 확인할 수 있습니다.

그렇다면 end는 무슨 값을 입력받는 걸까요?

end는 fgetc 함수를 통해서 문자를 입력받아 end에 저장하고 있습니다.

이 때 선택한 스트림이 stdin이기 때문에 키보드로부터 문자를 입력받는 것입니다.

 

<fputc 함수>

그 다음 줄을 보시면 fputc 함수를 통해 end에 저장된 문자를 출력하고 있습니다.

이 때 선택한 스트림이 fp이므로 gdnn.txt 파일에 입력된 문자를 출력하게 되는 것입니다.

 

그리고 파일을 닫아주며 프로그램 실행이 끝나게 됩니다.

 

파일 입출력을 왜 배우는 걸까 과거에는 생각해보았습니다.

물론 저는 소프트웨어 쪽을 전공하고 있는 사람은 아니기 때문에 실무에서 이것을 직접적으로 사용할 일은 없습니다.

그러나 로그 파일이랑 raw data를 남겨놔야 어떤 문제가 발생했는지 알 수 있고 이런 것들을 보니

정말 중요한 부분이 아닌가 생각이 됩니다.

 

반응형