#include <stdio.h> int main() { int score; char name[10]; //1byte를 10개를 만든다. FILE *fpin; //FILE 텍스트 파일 입출력시 사용. 4바이트 포인터이기 때문. FILE *fpout; fpin = fopen("d0327.in", "r"); // 이부분 외운다. 특히 fpin. if(0 == fpin) // 위의 fpin이 지정한 파일이름과 다를때 실행된다.("d0327") { printf("d0327.in파일을 열수 없습니다\n"); return 0; } else { printf("d0327.in파일을 열렸습니다\n"); } fpout = fopen("d0327.out", "w"); if(0==fpout) //파일이름 d0327과 다를때 실행. { printf("d0327.in파일을 열수 없습니다\n"); fclose(fpin); // fpin이 열려 있는 상태이므로 닫아야 한다. return 0; } else { printf("d0327.in파일을 열렸습니다\n"); } while(0== feof(fpin)) //while(!feof (fpin)) { fscanf(fpin, "%s %d", name, &score);//fpin에서 내용을 입력받는다. fprintf(stdout,"%s\t%d\n", name, score);//모니터에 출력 fprintf(fpout, "%s\t%d\n", name, score);//fpout 하드에 출력 } fclose(fpin);//fpin을 닫는다. fclose(fpout); // fpout을 닫는다. return 0; }
while에서 fscanf를 주목한다. fscanf는 fpin내부에 있는 글자를 입력받느다.
메모장에 kim, park...등을 %s자료형으로 받는다.
그리고 숫자는 93, 87, .....등을 %d로 받는다.
이 fscanf가 스캔에프의 원본이다. scanf는 f scanf의 축약 형태이다.
즉, fpin과 fpout이 생략이 되어있다.
fprintf(stdout,"%s\t%d\n", name, score); 이부분은 원래 소스에선 그냥 printf문이였다.
printf("%s\t%d\n", name, score); 이부분을 fprintf문으로 수정하여 stdout을 써서
모니터에 출력하였다.
fpin = fopen("d0327.in", "r"); 여기에서 |