2013-04-23 2 views
0

Это одна функция void из более крупной программы с функцией печати своего рода диаграммы. Сначала он будет печатать заголовок, а затем он использует цикл for для печати 13 строк, которые вызывают информацию из 4 массивов. Имена, двумерный массив символов, оценки, 2D-массив, средний, 1D-массив Float и Letter, массив 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); 

Изменения% S в Printf на% с останавливающей ошибкой сегментации, но мне нужно, чтобы печатать строку, состоявшуюся в массиве не только одного символа ,

Итак, как бы напечатать строку (и инструкцию в целом) без ошибки сегментации?

ответ

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() вы пытаетесь напечатать один символ (names[q][0]) с помощью %s.

Смежные вопросы