C 返回一个结构导致乱码
C returning a struct results in gibberish
我正在尝试 return 一个函数的结构,但试图在 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);
}
这是return结构
的函数
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
语句:
CLIENT creer_client()
{
CLIENT clt;
/* all the stuff you had before */
return clt; /* <- You were missing this */
}
我很惊讶你的编译器没有给你一个警告或错误。
我正在尝试 return 一个函数的结构,但试图在 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);
}
这是return结构
的函数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
语句:
CLIENT creer_client()
{
CLIENT clt;
/* all the stuff you had before */
return clt; /* <- You were missing this */
}
我很惊讶你的编译器没有给你一个警告或错误。