2013-01-20 30 views
2

我使用「GCC C編譯器」作爲我的編譯器,我有一個程序,使用「與fgets」中輸入需要的標準輸入,然後我使用多個printf的對由於某些輸入而打印結果。。c控制檯輸出不連續,等待直到程序完成

不過,我的問題是我想要的與fgets,直到我從主返回和程序結束,他們就住在我的代碼,但是目前沒有打印之間發生的輸出。

輸入代碼:

int get_inputs(char** operands, char* delim) { 
    if (fgets(input,sizeof(input),stdin) == NULL) return 0; /* End of file */ 

    /* Parse with StringParse, returns number of substrings */ 
    return StringParse(input, operands, delim, 2, "+-*/^ "); 
} 

輸出代碼:(在一段時間(1)循環)

count = get_inputs(operands, delim); 

switch(count) { 
case 0: 
    printf("User Terminated\n"); 
    return 0; /* User Terminated */ 

case 1: /* Single Value Input */ 
    accumulator = atof(operands[0]); 
    printf("%g\n", accumulator); 
    break; 

case 2: 
    if(strlen(operands[0]) == 0) { /* Operation First use Accumulator as input */ 
     accumulator = doMath(accumulator, atof(operands[1]), delim[0]); 
     printf("%g\n", accumulator); 
    } 
    else { /* Two new values, replace Accumulator */ 
     accumulator = doMath(atof(operands[0]), atof(operands[1]), delim[0]); 
     printf("%g\n", accumulator); 
    } 
    break; 

default: 
    printf("Invalid Input\n"); /* Invalid Input or Error */ 
    break; 
} 

每隔功能只是在做數學或字符串解析。

在此先感謝!

回答

4

這是因爲標準輸出緩存以提高性能。數據僅以較大的塊推送到輸出管道。要強制在某個點發生這種情況,請添加

fflush(stdout); 

在寫入stdout的代碼中。

相關問題