mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, May 23, 2006

C언어] 출력을 파일로 저장할 때는 printf() 가 아닌 fprintf() 함수를 사용하세요


printf() 함수는 출력을 stdout 즉 '명령 프롬프트 화면'으로만 보냅니다. 따라서 재지향을 사용하지 않는 한, 파일로 저장할 수는 없습니다.

이때는 fprintf() 함수를 쓰면 됩니다. 결과를 파일로 출력하기 위한 특별한 printf() 함수입니다.


#include <stdio.h>

void main(void) {
  FILE *out;


  out = fopen("test.txt", "w"); // 출력을 저장할 파일을 만들어서 열기

  fprintf(out, "하하하하 %d\nABCD", 1 + 1); // 출력을 파일로 저장

  fclose(out); // 파일을 열었으면 반드시 닫아 주어야 합니다

}



※ 이것은 윈도 프로그램이 아니라 콘솔 프로그램 즉 '명령 프롬프트용 프로그램'이기 때문에 명령 프롬프트에서 컴파일하는 것이 좋습니다.
※ 최대한 쉽게 표현하기 위해 위의 소스에는 에러 검사 코드를 넣지 않았습니다. "[C언어/기초] fopen() 과 fprintf() 함수의 에러 검사 코드" 에 에러 검사 코드를 추가한 버전이 있습니다.

위의 소스를 foo.c 등의 이름으로 저장하고 컴파일하면 test.txt 라는 파일이 생길 겁니다.

D:\Z>cl foo.c & foo
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

foo.c
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:foo.exe
foo.obj
D:\Z>



※ 위의 창에서 "cl foo.c & foo" 의 & 기호는 컴파일한 후, 생성된 foo.exe라는 파일을 실행시키라는 의미입니다. C언어와는 관계없고, 명령 프롬프트 창에서 제공하는 특수 기호입니다. 2개 이상의 명령어을 한 줄에 적는 방법입니다.


test.txt 파일을 메모장 등으로 열어 보시면

하하하하 2
ABCD


이렇게 fprintf() 함수의 출력 결과가 파일에 적혀 있을 것입니다.



참고로, fopen("test.txt", "w") 에서 "w" 는 파일 열기 모드를 가리키는데, 파일을 "텍스트 모드로" 그리고 "쓰기(writing) 모드"로 열고, 만약 같은 이름의 파일이 이미 있다면 덮어쓰라는 의미입니다. 이러면 이미 있던 파일의 내용은 허공으로 사라집니다.

무슨 파일이든 파일을 한 번 열었으면 꼭 닫아주어야 합니다. 그렇지 않으면 파일이 깨질 수도 있고, 파일이 지워지지 않을 수도 있고 여러가지 문제가 생길 수 있습니다.


그리고 텍스트 파일 읽기 쓰기 작업을 주로 하신다면, C보다는 펄(Perl)이 더 적당합니다. 펄은 텍스트 파일 다루기 전용 언어라고 할 수도 있을 정도로 강력한 기능들이 많습니다.




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top