2011-10-30 24 views
2

我想刪除重複在此代碼:如何在C中創建對的列表?

printf("%.2f: %s\n", 440.00f, "A4"); 
printf("%.2f: %s\n", 523.25f, "C5"); 
printf("%.2f: %s\n", 880.00f, "A5"); 
printf("%.2f: %s\n", 1046.50f, "C6"); 

我的計劃是要對和循環在它的列表。這是可能的,一個好的解決方案,還是我應該製作兩個陣列?

+0

你也可以配成對的一個數組。取決於你如何獲得你的數據。 – Mat

+0

@Mat:我的問題是_how_製作一組數字:) – Andreas

回答

7

只是要結構的數組:

struct pair { 
    double num; 
    char str[32]; 
}; 

struct pair pairs[10] = { 
    {440.00f, "A4"}, 
    {523.25f, "C5"}, 
    /* ... */ 
}; 

/* C99. */ 
pairs[2] = (struct pair){880.00f, "A5"}; 
pairs[3] = (struct pair){ 
    .str = "C6", 
    .num = 1046.50f 
}; 

for (i = 0; i < sizeof(pairs)/sizeof(pairs[0]); i++) 
    printf("%.2f: %s\n", pairs[i].num, pairs[i].str); 
+1

或者,執行'double nums [COUNT] = {...}; char strs [COUNT] [32] = {...}; for(i = 0; i

+0

謝謝!在代碼中初始化列表的最簡單方法是什麼? – Andreas

+0

@Andreas我編輯了我的答案。 – cnicutar