2011-12-09 31 views
19

我相信我已經仔細閱讀了整個printf()文檔,但找不到任何方法將它打印出來,例如float(s)的10個元素的數組元素。有沒有辦法讓printf()正確地輸出一個數組(浮點數)?

例如,如果我有

float[] foo = {1., 2., 3., ..., 10.}; 

然後我想有一個單獨的語句,如

printf("what_do_I_put_here\n", foo); 

這將打印出的東西沿着線:

1. 2. 3. .... 10. 

有沒有辦法在香草C做到這一點?

+5

我使用類似'的#define printarr(FMT,DAT,LEN)\t對(INT I = 0; I DipSwitch

回答

23

需要迭代直通數組元素

float foo[] = {1, 2, 3, 10}; 
int i; 
for (i=0;i < (sizeof (foo) /sizeof (foo[0]));i++) { 
    printf("%lf\n",foo[i]); 
} 

或創建函數,返回堆疊的snprintf,然後用

printf("%s\n",function_that_makes_pretty_output(foo)) 
打印
4

您通過陣列和printf()的每個元素都循環:

for(int i=0;i<10;++i) { 
    printf("%.2f ", foo[i]); 
} 

printf("\n"); 
2

我不認爲有一種方法在printf的打印陣列爲您服務。 「printf」函數不知道你的數組有多長。

+2

來調用它,這可以用格式指定。但我不認爲有這樣的說明者存在。 – cnicutar

1

你需要去爲一個循環:

for (int i = 0; i < sizeof(foo)/sizeof(float); ++i) 
    printf("%f", foo[i]); 
printf("\n"); 
11

有語言中沒有單獨的語句「將整個數組打印到屏幕上」。數組中的每個元素都必須單獨打印到屏幕上。

不過不要擔心,循環是來拯救你!我想你的問題是隻知道是否有一種方法,我想一個人與5K代表的SO不需要看知道如何實現循環的代碼片段!

+17

也許他沒有,但是對於每個人來說都有問題,即使對於有0名代表的人也是如此;) –

-4

您可以打印它作爲字符串:

printf("%s\n", foo); 
1

C不是面向對象編程(OOP)語言。所以你不能在OOP中使用屬性。例如。 C中沒有.length屬性,所以你需要爲你的任務使用循環。

-1

誠實一切都很好,但如果有人使用n個時間數字並將它們顯示出來,它會很容易或更有效率,所以更喜歡這是一個不錯的選擇。不要預定義的數組變量讓用戶定義並顯示結果。這樣的..

int main() 
{ 
    int i,j,n,t; 
int arry[100]; 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { scanf("%d",&t); 
     arry[i]=t; 
    } 
for(j=0;j<n;j++) 
    printf("%d",arry[j]); 

return 0; 
} 
相關問題