IT 대장간

C언어 파일 입출력 총 정리 [기본 예제 포함] 본문

Programing/C & C++

C언어 파일 입출력 총 정리 [기본 예제 포함]

태장장이 2021. 2. 26. 14:54

#1 생성(참조) 파일 형식 :

* 확장자 : 텍스트파일 (.txt)

* 파일내용 : 문자와 숫자 혼합

#2 읽기 함수

* 함수 : scanf_s, fscanf, gets, fgets

#3 쓰기 함수

* 함수 : printf, fprintf,  puts, fputs,

 

#4 변수

* 파일 스트림 : *file

* 입력받은 문자를 저장할 변수 : str[500]

* 입력받은 숫자를 저장할 변수 : num[500]

* 생성 파일명 : TJ1, TJ2, TJ3 ....    .txt 

#5 예제 목차(기본형)

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

1) scanf_s를 통한 변수 저장 -> printf로 콘솔 출력

2) scanf_s를 통한 변수 저장 -> fprintf로 파일에 쓰기

3) scanf_s를 통한 변수 저장 -> puts로 콘솔 출력

4) scanf_s를 통한 변수 저장 -> fputs로 파일에 쓰기

 

▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶

5) fscanf 를 통한 파일 읽기 & 변수 저장 -> printf로 콘솔 출력

6) fscanf 를 통한 파일 읽기 & 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

7) fscanf 를 통한 파일 읽기 & 변수 저장 -> puts를 통한 콘솔 출력

8) fscanf 를 통한 파일 읽기 & 변수 저장 -> fputs를 통한 다른 파일에 쓰기

 

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

9) gets_s 를 통한 변수 저장 -> printf로 콘솔 출력

10) gets_s 를 통한 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

11) gets_s 를 통한 변수 저장 ->  puts를 통한 콘솔 출력

12)  gets_s 를 통한 변수 저장 -> fputs를 통한 다른 파일에 쓰기

 

 

◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀

13) fgets를 통한 파일 읽기 & 변수 저장 -> printf로 콘솔 출력

14) fgets를 통한 파일 읽기 & 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

15) fgets를 통한 파일 읽기 & 변수 저장 -> puts를 통한 콘솔 출력

16) fgets를 통한 파일 읽기 & 변수 저장 -> fputs를 통한 다른 파일에 쓰기

 

 

#7 사용 방법

1) scanf_s를 통한 변수 저장 -> printf로 콘솔 출력

 

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

2) scanf_s를 통한 변수 저장 -> fprintf로 파일에 쓰기

append 사용하여 다음행 '2021' 숫자 입력

 

 

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

3) scanf_s를 통한 변수 저장 -> puts로 콘솔 출력

 

4) scanf_s를 통한 변수 저장 -> fputs로 파일에 쓰기

 

 

 

 

 

 

 

 

 

▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶

5) fscanf 를 통한 파일 읽기 & 변수 저장 -> printf로 콘솔 출력

▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶

6) fscanf 를 통한 파일 읽기 & 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

 

 

▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶

7) fscanf 를 통한 파일 읽기 & 변수 저장 -> puts를 통한 콘솔 출력

줄단위 출력이기때문에 TJ6.txt파일의 2021이라는 문자가 출력되지 않음

 

▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶▶

8) fscanf 를 통한 파일 읽기 & 변수 저장 -> fputs를 통한 다른 파일에 쓰기

 

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

9) gets_s를 통한 변수 저장 -> printf로 콘솔 출력 (유용)

 

 

gets_s 실행 시 직접 입력이 가능하며 해당 입력값을 str에 저장
char형식뿐 아니라 int나 공백 모두 출력가능한 장점

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

10) gets_s 를 통한 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

 

 

 

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

11) gets_s 를 통한 변수 저장 ->  puts를 통한 콘솔 출력

 

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

12) gets_s 를 통한 변수 저장 ->  fputs를 통한 다른 파일에 쓰기

 

 

 

◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀

13) fgets를 통한 파일 읽기 & 변수 저장 -> printf로 콘솔 출력

 

★매우 중요

 

유형 1 - 기본형

: str 변수에 file의 내용을 MAX(500)의 길이만큼 가져와 저장한다.

 

이전 단계에서 생성한 TJ12.txt 파일
2행이 출력되지 않는 모습

 

유형 2 - 여러줄 출력

같은 내용을 똑같이 복사하여 작성. printf에서만 가능하다

 

 

2행에 작성된 텍스트까지 그대로 출력

유형 3 - 파일을 참조하여 불러오는 것이 아닌 직접 텍스트를 입력하여 저장

 

 

: stdin (standard input의 약자)은 표준 스트림으로 매개변수에 직접 입력이 가능한 기본 내장된 스트림이다.

표준스트림과 관련한 자세한 내용은 구글링

 

 

fgets 함수가 실행될떄 stdin 스트림을 통해 직접 입력할 수 있게 된다.

◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀

14) fgets를 통한 파일 읽기 & 변수 저장 -> fprintf를 통한 다른 파일에 쓰기

 

 

마찬가지로 한 줄만 읽어와 저장했다는 것을 알 수 있다.

 

 

 

◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀

15) fgets를 통한 파일 읽기 & 변수 저장 -> puts를 통한 콘솔 출력

 

 

 

 

◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀◀

16) fgets를 통한 파일 읽기 & 변수 저장 -> fputs를 통한 다른 파일에 쓰기

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

주요 내용 정리 

* gets puts는 인자값에 문자열형식 변수밖에 못넘긴다.

* gets_s가 간단히 사용해야할 떄 굉장히 유용한 편 , 줄단위로 리딩.

* scanf_s는 한글자씩 입력하다보니 입력받는 값에 대해 숫자가 나올경우 나올 경우 텍스트중에서 이것들만 뽑아낼수 있을거라고 생각.  (%d와 아스키코드)

*puts함수를 사용함과 동시에 append 속성을 통해 내용을 추가할 경우 fprintf와 달리 줄바꿈을 하여 다음 행의 문자를 출력할 수 없다.

*표준 스트림을 통해 fgets함수 사용중 콘솔상에 직접입력하여 전달할 수 있다.