【问题标题】:String Error in Void Function Segmentation Fault无效函数分段错误中的字符串错误
【发布时间】:2013-04-16 01:42:27
【问题描述】:

这是一个较大程序的void函数,具有打印一种图表的功能。它将首先打印标题,然后使用 for 循环打印 13 行调用来自 4 个数组的信息。 Names,一个 2D Char 数组,Scores,一个 2D Int 数组,Average,一个 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);

将 printf 中的 %s 更改为 %c 会停止分段错误,但我需要它打印数组中保存的字符串,而不仅仅是单个字符。

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

【问题讨论】:

    标签: c arrays string function


    【解决方案1】:

    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])。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多