c - Void 函数段错误中的字符串错误

标签 c arrays string function

这是一个来自较大程序的无效函数,具有打印一种图表的功能。它首先打印标题,然后使用 for 循环打印 13 行,调用来自 4 个数组的信息。名称、二维字符数组、分数、二维整数数组、平均值、一维 float 组和字母、一维字符数组。

函数本身看起来像这样:

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 中的 %s 更改为 %c 会停止段错误,但我需要它来打印数组中保存的字符串,而不仅仅是单个字符。

那么如何在没有段错误的情况下打印字符串(以及整个语句)?

最佳答案

我相信 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]) .

关于c - Void 函数段错误中的字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159243/

相关文章:

c - 查找由 malloc 函数分配的大小

C,静态库,链接器: How to give preference to strong symbol over weak symbol

javascript - 数组大小如何在 Javascript 中工作

ios - 异步函数返回正常,但数组变为空

string - 一行将键值对字符串转换为HashMap

c - 多线程服务器中的段错误

c - scanf之后的动态内存分配

javascript - 检查数组是否包含具有与 ID 列表匹配的 ID 的对象

php - 分别生成64个字符的十六进制字符串

c++ - 方法范围外取消引用的 char[] 指针的有效性