2012-11-12 16 views
-1

你能告訴什麼錯在這裏?試圖調用自定義函數C,但scanf()的原因造成的問題

#include <stdio.h> 
#include <stdlib.h> 

int test (void) 
{ 
    int i; 
    printf("Enter a number: "); 
    scanf("%d",&i); 

    return i; 
} 

int main (void) 

{ 

    test(); 

    return 0; 
} 

這只是一個簡單的例子,但由於某種原因,除非我擺脫了scanf,否則main不會運行。

+1

你是什麼意思不運行?它會等待輸入,如果這就是你的意思。 – chris

+0

只是坐在那裏無所事事? :)類型1

+0

也嘗試打印一些東西。在scanf()之後,給出輸入'1',並添加語句printf()。所以你會看到你的程序很好走。 – SRJ

回答

1

隨時爲您的printf字符串末尾使用'\n'。這會使輸出緩衝區刷新並打印字符串。在程序中添加更多打印件。 你可以重寫你的程序像下面,和打印將幫助您瞭解什麼是與您的程序發生。

#include <stdio.h> 
#include <stdlib.h> 

int test (void) 
{ 
    int i; 
    printf("Enter a number: \n"); 
    scanf("%d",&i); 
    printf("You just eneterd : %d\n",i); 
    return i; 
} 

int main (void) 

{ 
    printf("About to call test() \n"); 
    test(); 
    printf("Done calling test() \n"); 
    return 0; 
} 

更好地得到一個很好的C編程書來理解這些基本的東西。我建議The C programming language

0

我認爲你必須使用fflush()或在printf函數的末尾使用'\ n'字符,這將最終刷新std輸出緩衝區。爲了檢查,只需在讀取該值之後使用printf()打印變量的值即可。

希望有幫助....