C 在循环期间打印字符串数组

C 在循环期间打印字符串数组,c,arrays,function,struct,typedef,C,Arrays,Function,Struct,Typedef,编写一个函数,该函数使用循环显示“名称”“e1”“e2”“e3”“e4”“平均值”和“等级”的小图表。在函数中,我无法打印存储在“names”数组中的元素 这是整个功能: void display(stuff *everything) { int q = 0; printf("\n\n Name \t\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

编写一个函数,该函数使用循环显示“名称”“e1”“e2”“e3”“e4”“平均值”和“等级”的小图表。在函数中,我无法打印存储在“names”数组中的元素

这是整个功能:

void display(stuff *everything)
{    
int q = 0;

printf("\n\n Name \t\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",
everything[q].names[q],
everything[q].scores[0],
everything[q].scores[1],
everything[q].scores[2],
everything[q].scores[3],
everything[q].average,
everything[q].letter);
}
return;
}
一旦你进入了主流

stuff everything[13];
int i=0;
int j=0;
int a=0;
FILE *student, *score;
student = fopen("student.dat", "r");
score = fopen("scores.dat", "r");
名称的填充方式如下:

for(a=0; a<13; a++)
{
 fscanf(student, "%s", &everything[a].names[a]);
}
fclose(student);

它编译得很好,但在运行它时,我遇到了一个分段错误。经过一些测试,我或多或少发现它来自函数中的%s,我不确定如何修复它。帮助?

您应该修改阅读代码,如下所示:

for(a=0; a<13; a++)
{
    fscanf(student, "%19s", everything[a].names);
}
fclose(student);

for(a=0;a
一切[q]。名称[q]
应该是
一切[q]。名称
,因为其目的是写入字符串(其中
printf()
需要
名称
字符串的地址),而不是字符串的
q
第个字母的值所指向的字符串。

这一行看起来可疑
fscanf(学生,“%s”,以及所有[a]。名称[a]);
display(everything);
for(a=0; a<13; a++)
{
    fscanf(student, "%19s", everything[a].names);
}
fclose(student);