words.txt 는 말씀하신 GitHub 저장소(https://github.com/namjaeyoon/c.dojang/blob/master/Unit%2071/words.txt))
에서 Hello, world! 문장을 제 프로젝트 폴더 words.txt로 복사하여 사용하였으며 정상적으로 답이 출력되었습니다.
제가 놓친부분이나 답은맞았으나 정답으로 인정하지않는 이유를 알려주시면 수정하도록 하겠습니다. 부디 확인 부탁드립니다.
심사 실패
제출한 코드를 실행할 수 없습니다.
(도장_관리자에 의해 편집됨 - 원문 제출일 2017년 1월 10일, 화요일, 오전 6:44 )
char buffer[20] = { 0, };
buffer는 20으로 선언했으므로 20으로 초기화해야 합니다.
size 변수에는 파일의 크기를 구했으므로 13이 저장됩니다.
memset(buffer, 0, size)로는 buffer 전체(20)가 아니라 일부(13)만 초기화하게 됩니다. 따라서 다음과 같이 고쳐야 합니다.
memset(buffer, 0, 20);
해결되었습니다 정말감사합니다.
한가지 더 질문이 있습니다만
71.11 심사문제에서 fwrite를 이용해 stdout에 저장하여 한글자씩 출력하려 했으나 for반복문을 사용한 부분에서fwrite(stdout,1,1,&buffer[i]); 를 사용하게되면 아래와 같은 오류가 발생합니다.
'함수': 'char *'과(와) 'FILE *' 사이의 형식이 호환되지 않습니다.
char *buffer = malloc(sizeof(char)*size);
memset(buffer, 0, size);
위와같이 설정되어 있는데 fwrite는 파일포인터끼리만 가능한 것인가요?
ps. printf 를 이용하면 아주 잘 출력됩니다.
데이터 형식(type)이 다르기 때문에 오류가 발생한 것입니다.
fwrite(stdout,1,1,&buffer[i]);
가 아니라
fwrite( buffer, 1, sizeof(buffer), stdout );
또는
fwrite( buffer, 1, 쓸_크기, stdout );
이 아닐까요.
fwrite의 4 번째 인자는 FILE * 형식이며, stdout도 FILE * 형식입니다.
형식이 호환되지 않는 오류는 stdout을 첫 번째에 써서 그렇습니다. fwrite의 첫 번째 인수는 (const) char * 타입을 써야 하고, stdout은 FILE * 형식이니 서로 형식이 다릅니다.
감사합니다.