0

以下に定義されているように、構造体「sommet」の配列を使用しようとしています。

typedef struct sommet {
double x;
double y;
char nom[100];
struct arete2* voisin;};

sommet* somtab = (sommet *) calloc(nbnoeud, sizeof(sommet));
if(somtab = NULL){
    puts("Calloc error");
    exit(1);
}

私のコードには、xtab、ytab、および nomtab という 3 つの別個の配列があり、それぞれに、同等のインデックスの somtab 要素の x、y、および nom 値が含まれています (つまり、somtab[0].x = xtab[0]、somtab[1 ].x = xtab[1] など) 各 somtab 要素を設定すると、プログラムが壊れて「check3」になりません。

puts("check1");

for(a=0; a<nbnoeud; a++){
    printf("Read item %d; \t \t \t %s - (%lf, %lf). \n", a, nomtab[a], xtab[a], ytab[a]);
}

puts("check2");

for(a=0; a<nbnoeud; a++){
    somtab[a].x = xtab[a];
    somtab[a].y = ytab[a];
    strcpy(somtab[a].nom, nomtab[a]);
}

puts("check3");
4

1 に答える 1

0

ポインターへのポインターを使用します。

sommet** somtab = malloc(nbnoeud*sizeof(sommet));

使用する

    somtab[a]->x = xtab[a];
    somtab[a]->y = ytab[a];
    strcpy(somtab[a]->nom, nomtab[a]);
于 2013-04-15T12:49:54.047 に答える