全局文件指针声明存在一些问题,因此我遇到了分段错误。GDB 表明它专门出现在函数的fscanf
行中sourceToStream
。任何帮助,将不胜感激。
#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;
}