낙락장송s 2012. 10. 22. 21:18

형식화된 파일 입출력은 특정 방법으로 형식화된 텍스트와 숫자 데이터를 다루는데요, fprintf()는 전 포스팅에 다뤘기 때문에 간단히만 알고 넘어가겠습니다.

fprintf(FILE *fp, char *fmt,...);

FILE *fp는 *fp에 자신이 입력할 내용을 보낼 포인터를 뜻합니다. 예제를 보시면 아실겁니다. :)

마지막 ...엔 변칙적인 개수의 인수를 뜻하는데, 파일 포인터와 형식화 문자열을 인수로 가지면서 추가로 필요한 만큼 많은 인수를 받아 들일 수 있습니다. printf()와 많이 유사합니다.

fprintf()를 사용해 저번에 제가 C드라이브에 만든 hello.bat 파일에 입력해보겠습니다.

 

#include <stdio.h>
#include <stdlib.h>

void clear(void); // stdin안의 불필요한 내용을 제거하기 위해 만든 함수
main(){
 FILE *fp;
 float data[5];
 int count;
 char filename[20];
 puts("5개의 부동 소숫점 값을 입력해주세요 : ");
 for(count=0; count<5; count++)
  scanf("%f",&data[count]);

 clear();
 printf("불러올 파일 이름을 입력해주세요 : ");
 gets(filename);

 if( (fp = fopen(filename,"w")) == NULL){
  fprintf(stderr,"%s파일을 읽어들이는데 실패했습니다!",filename);
  exit(1);
 }
 for(count=0; count<5; count++){
  fprintf(fp,"data[%d] = %f\n", count, data[count]);
  fprintf(stdout,"data[%d] = %f\n", count, data[count]);
 }
 fclose(fp); //파일을 닫습니다.
 printf("\n");
}
void clear(void){
 char junk[80];
 gets(junk);

 결과 :

제가 *fp에 C:\hello.bat을 지정했기 때문에 fp는 내용을 hello.bat에 보내는겁니다.

수정되었죠? 끝까지 읽어주셔서 감사합니다.