【问题标题】:Segmentation fault when using struct in C在 C 中使用 struct 时出现分段错误
【发布时间】: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 文字的警告,如果没有,那么您需要启用更多警告。

标签: c struct segmentation-fault clang


【解决方案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}
    };

【讨论】:

  • 事实上,省略内括号本身并不是错误,但强烈建议添加它们以提高可读性。
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 2020-02-28
  • 2021-03-12
  • 2021-06-13
  • 2013-04-03
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多