如何正确填写我的结构表而不会导致程序崩溃?

时间:2019-06-14 11:26:52

标签: c pointers struct

我不明白为什么在尝试将某些数据填充到在main中声明的结构表中时我的程序会崩溃... 我知道表本身就是指针吗? 所以基本上我真的不需要在使用scanf ...时使用&var传递地址,但是那对我来说崩溃了..

当我尝试通过 scanf(“ expression”,&T [i] .var) ..传递输入但有效时,却在显示我的内容时发现:

Problem Image

正如您所看到的,我无法为输入的统计信息和值添加一些完全不同的事件..可能是因为占用内存地址..但是为什么Id实际上起作用并且Lieu为null? 太奇怪了。

struct ChDep
{
int id;
int mins; 
char nom[10];
char lieu[10];
double prix;
char stat;
};


//Function Fill some content to my Table
void RemplireHCD(int n, struct ChDep *T)
{

for (int i = 0; i < n; i++)
{
    printf("Mission Numero : %d\n", i);
    printf("ID = ");
    scanf("%d", &T[i].id);
    printf("\nDuree = ");
    scanf("%d", &T[i].mins);
    printf("\nNom = ");
    scanf("%s", &T[i].nom);
    printf("\nLieu = ");
    scanf("%s", &T[i].lieu);
    printf("\nPrix = ");
    scanf("%lf", &T[i].prix);
    printf("\nStatut = ");
    scanf("%c", &T[i].stat);
    system("cls");
}
}

//Function to show my Struct Table Content
void AfficherHCD(int n, struct ChDep *T) 
{
system("cls"); 
for (int i = 0; i < n; i++)
{
    printf("%d > [ ID: %d - Duree : %d - Libelee : %s - Lieu : %s - Prix    : %lf - Statut : %c ]\n",
        T[i].id, T[i].mins, T[i].nom, T[i].lieu, T[i].prix, T[i].stat);
}
}


int main(int argc, char *argv[])
{
struct ChDep HCD[20];
int n;

printf("SVP donnez Le Nombre de Mission A remplire : \n");
scanf("%d", &n);
system("cls");

RemplireHCD(n, HCD);
AfficherHCD(n, HCD);

getchar();
return 0;
}

0 个答案:

没有答案