【问题标题】:C returning a struct results in gibberishC返回结构导致乱码
【发布时间】:2022-01-08 09:48:15
【问题描述】:

我试图从函数返回一个结构,但试图在 main 中打印它的内容,但我得到的只是乱码 这是结构

struct date
{
    int jour;
    int mois;
    int annee;
};
typedef struct date DATE;

struct client
{
    char nom[50];
    char prenom[50];
    char cin[12];
    DATE date_naiss;
    char num_passport[10];
    int a;
};

这是我的主要功能

void main()
{
    CLIENT clt;
    clt=creer_client();
    afficher_client(clt);
}

这是返回结构的函数

CLIENT creer_client()
{
    CLIENT clt;
    printf("Donner le nom du client : ");
    fgets(clt.nom, 50, stdin);
    printf("Donner le prenom du client : ");
    fgets(clt.prenom, 50, stdin);
    printf("Donner le CIN du client : ");
    fgets(clt.cin, 12, stdin);
    while (cntrl_cin(clt.cin) == false)
    {
        fgets(clt.cin, 12, stdin);
    }
    printf("donner la date de naissance");
    scanf("%d%d%d", &clt.date_naiss.jour, &clt.date_naiss.mois, &clt.date_naiss.annee);
    getchar();
    printf("donner le numero de passeport : ");
    fgets(clt.num_passport, 10, stdin);
}

这是打印结构的函数

void afficher_client(CLIENT clt)
{
    printf("nom: %s \tprenom:%s\ncin:%s\ndate de naissance: %d/%d/%d \nnumero passeport: %s", clt.nom, clt.prenom, clt.cin, clt.date_naiss.jour, clt.date_naiss.mois, clt.date_naiss.annee, clt.num_passport);
}
```

【问题讨论】:

  • 该函数中没有return 语句,我相信编译器会告诉你这一点。启用警告,阅读警告,修复警告。

标签: c function struct structure


【解决方案1】:

您似乎缺少return 声明:

CLIENT creer_client()
{
    CLIENT clt;
    /* all the stuff you had before */
    return clt; /* <- You were missing this */
}

我很惊讶你的编译器没有给你一个警告或错误。

【讨论】:

  • 如果编译器没有给出警告,那么 OP 需要添加选项来获取相关警告,或者他们需要升级到更好的编译器来给出警告。
  • 我正在使用 VScode 和 gcc 编译器,当我点击 alt+ctrl+N 进行编译时,它没有显示任何警告任何解决方案?
  • @DhiaAmmar This question may help。构建输出窗格应在您开始构建时自动显示,并且您需要确保构建完成时它不会被隐藏。
猜你喜欢
  • 2022-01-08
  • 2012-06-02
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多