在 C 中使用 struct 时出现分段错误
Posted
技术标签:
【中文标题】在 C 中使用 struct 时出现分段错误【英文标题】:Segmentation fault when using struct in C 【发布时间】:2020-11-21 07:29:00 【问题描述】:为什么会出现分段错误?我对C很陌生,对我来说真的很难。 我google了很多,发现它必须正常工作。
#include <stdio.h>
struct school
int schoolNum;
int year;
int gradNum;
int univNum;
;
int main()
struct school schools[5] =
114, 2020, 470, 300,
86, 2019, 545, 450,
231, 2020, 340, 320,
113, 2020, 435, 395,
55, 2019, 395, 380
;
printf('%d\n', schools[0].gradNum);
return 0;
【问题讨论】:
使用"
而不是 '
字符串文字。
printf
调用中的单引号是错误的。对格式字符串使用双引号。您应该收到有关该问题的编译器警告。 (启用所有警告。)
谢谢你,那真是愚蠢的错误
您可能还想在结构的初始化数组中添加 4 对大括号 ...
。
一个体面的编译器应该发出关于 multi.character 文字的警告,如果没有,那么您需要启用更多警告。
【参考方案1】:
您的代码中有两个错误,如 cmets 所述,您需要在 printf 调用中将单引号替换为双引号。 然后你需要添加大括号对来包围每个学校实例,如下所示:
struct school schools[5] =
114, 2020, 470, 300,
86, 2019, 545, 450,
231, 2020, 340, 320,
113, 2020, 435, 395,
55, 2019, 395, 380
;
【讨论】:
事实上,省略内括号本身并不是错误,但强烈建议添加它们以提高可读性。以上是关于在 C 中使用 struct 时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章