Существует некоторая проблема с объявлением указателя глобального файла, в результате которого я получаю ошибку сегментации. GDB показал, что это происходит конкретно на линии fscanf
в функции sourceToStream
. Любая помощь будет оценена по достоинству.Объявление глобального указателя файла в 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
Я не знаю, почему Майк удалил свой комментарий, но почему бы вам не проверить возвращаемое значение 'fopen'? – Shahbaz
Есть два 'fscanf'. – md5