2013-04-23 67 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])。