526
2016-05-18 22:21:08
0
다음에 자료 현황 함수인 information 을 보게 되면 첫번째로 눈에 띄는 것은
if (stream1 = NULL) 인데 이 부분은 if (stream1 == NULL) 이렇게 == 두개 써줘야지 비교 연산으로 인식합니다. 하나만 쓰시면 대입 연산이라 항상 참이 되게 되요.
두 번째로는 순서가 조금 잘못된것 같은데 stream1 이 NULL 인지 체크 (즉, 파일이 잘 읽혔는지 체크)할 때는 파일을 먼저 읽어온 뒤에 체크를 해야 하겠죠. 그래서 다음과 같이 되어야 합니다.
stream1 = fopen("information.txt", "r");
if (stream1 == NULL)
{
printf("파일열기 에러n"); // 보너스로 이쁘게 하기 위해 n 을 이용하여 띄어 쓰기 'ㅡ'/
main();
}
마지막으로는 파일을 특정 포멧으로 읽을 때는 fscanf 를 사용해서 읽고 쓸 때는 fprintf 로 사용해야 하기 때문에 여기서는 fscanf 를 이용해서 읽어 주셔야 해요. 또한, 파일의 정보는 stream1 이라는 변수가 가지고 있기 때문에 stdout 이 아닌 stream1 로 넣어 주시면 됩니다.
for (a = 0;a<2; a++)
{
fscanf(stream1, "%s %s %sn", info[a].name, info[a].writer, info[a].no); // 이 부분이 파일에서 읽는 부분 하지만 출력은 하지 않아요
printf("%s %s %sn", info[a].name, info[a].writer, info[a].no); // 여기서 읽은 데이터를 출력합니다.
}