2013-04-23 78 views
0

這是一個大型程序中的一個無效函數,具有打印某種圖表的功能。它將首先打印標題,然後使用for循環打印13行,從4個數組中調用信息。名稱,2D Char數組,分數,2D Int數組,平均值,1D浮點數組和字母,1D Char數組。無效函數分割錯誤中的字符串錯誤

函數本身看起來像這樣:

void display(char names[][8], int scores[][4], float *average, char *letter) 
{ 
    int q = 0; 

    printf("\n\n Name \t E1 \t E2 \t E3 \t E4 \t Avg \t Grade"); 
    for(q=0; q<13; q++) 
    { 
    printf("\n %s \t %d \t %d \t %d \t %d \t %.2f \t %c", names[q][0], scores[q][0], 
    scores[q][1], scores[q][2], scores[q][3], average[q], letter[q]); 
    } 
return; 
} 

一旦我運行它,它運行良好,直到函數調用此,有一次我到那裏,我得到一個分段錯誤。作爲參考,這是函數調用:

display(&names, &scores, &average, &letter); 

中的printf的%C更改%S停止分段錯誤,但我需要它來打印陣列不僅僅是單個字符在舉行的弦。

那麼如何打印字符串(和聲明作爲一個整體)沒有分段錯誤?

回答

4

printf()應爲我相信,

printf("\n %s \t %d \t %d \t %d \t %d \t %.2f \t %c", names[q], scores[q][0], 
    scores[q][1], scores[q][2], scores[q][3], average[q], letter[q]); 

在原來的printf()您試圖打印使用%s一個字符(names[q][0])。