2013-12-08 70 views
0

下面的柔性文件給出了輸出不會退出與當它遇到一個錯誤,就像試圖寫一個非零狀態的/ dev /全:故障使用Flex錯誤處理

WS  [ \t]+ 
%option noyywrap 
%{ 
#include <stdio.h> 
#include <stdlib.h> 
int output(const char *); 
%} 

newline (\r|\n|\r\n|\n\r) 

%% 

#[^\r\n]*/{newline}  {}; 
[^#]+ { output(yytext); } 

<<EOF>> { output(yytext); return 0; } 

%% 

int main (void) { 
    while (yylex()) ; 
    return errno; 
} 

int output(const char *string) 
{ 
    int error; 
    if (fputs(string, stdout) == EOF){ 
    error = errno; 
    fprintf(stderr, "Output error: %s\n", strerror(error)); 
    exit(errno); 
    } 
    return 0; 
} 

我該如何解決這個問題?

回答

1

問題是我沒有沖洗標準輸出。由於緩衝,printf成功,但fflush失敗。