전역 파일 포인터 선언에 문제가 있습니다. 결과적으로 세분화 오류가 발생합니다. GDB는 특별히 sourceToStream
함수의 fscanf
행에서 발생한다는 것을 보여주었습니다. 어떤 도움을 주시면 감사하겠습니다.C의 전역 파일 포인터 선언
#define SOURCE_CODE "source_code.txt"
#define CHARACTER_STREAM "character_stream.txt"
static FILE* in_fp;
static FILE* out_fp;
void sourceToStream() {
char buf;
while(fscanf(in_fp, "%c", &buf) != EOF) {
if (buf == '\%')
while(buf!='\n' && buf !='\r' && buf!=EOF)
fscanf(in_fp, "%c", &buf);
if(buf != '\n' && buf != '\r' && buf != '\t' && buf != ' ')
fprintf(out_fp, "%c", buf);
}
}
int main() {
in_fp = fopen(SOURCE_CODE, "r");
out_fp = fopen(CHARACTER_STREAM, "w");
sourceToStream();
fclose(in_fp);
fclose(out_fp);
return 0;
}
이'는 fopen()'성공 하는가 해당 파일 또는 디렉터리를? – hmjd
Mike가 그의 코멘트를 삭제 한 이유는 모르지만'fopen'의 반환 값을 확인하지 않으시겠습니까? – Shahbaz
두 개의 'fscanf'가 있습니다. – md5