-1


コードにいくつか問題があり、修正できません。誰でも mycode の欠陥を見つけることができますか? 入力ファイルから都市の距離を取得し、繰り返しなしで都市名をマップにコピーしたい.私の問題はセグメンテーション違反です. 入力ファイルは、いくつかの行の2つの都市名とそれらの間の距離で構成されており、都市名を取得しようとして、それらをマップという名前のダブルポインターにコピーしました。PS下手な英語でごめんなさい

city1[0]  = (char*)malloc(sizeof(char)*10);                     
city2[0]  = (char*)malloc(sizeof(char)*10);
map[0] = (char*)malloc(sizeof(char)*10);
map[1] = (char*) malloc(sizeof(char)*10);
map[2] = (char*) malloc(sizeof(char));
map[2] = NULL;
fscanf(data, "%s %s %d", city1[0], city2[0], &distance);
strcpy(map[0],city1[0]);
strcpy(map[1],city2[0]);                  
j=2,i=1;
while(fscanf(data, "%s %s %d",city1[i],city2[i], &distance)!=EOF){
    city1[i+1] = (char*)malloc(sizeof(char) *10);
    city2[i+1] = (char*)malloc(sizeof(char)*10);
    if(checker(map,city1[i])==1){
        map = realloc(map, sizeof(char*)*(j));
        map[j] = (char*) malloc(sizeof(char));
        strcpy(map[j], city1[i]);
        map[j+1] = (char*) malloc(sizeof(char));
        map[j+1] != NULL;
        j++;
    }
    if(checker(map,city2[i])==1){
        map = realloc(map, sizeof(char*)*(j));
        map[j] = (char*) malloc(sizeof(char));
        map[j+1] = (char*) malloc(sizeof(char));
        strcpy(map[j], city2[i]); 
        map[j+1] = NULL;   j++;
    }
}
4

1 に答える 1

0

使用している変数の定義を表示します。

malloc()文字列にスペースを動的に割り当てるための の使用に関して、誤解があると思います。への多くの呼び出しを使用して、単一の文字にスペースを割り当てていますmalloc()。これは非常に混乱しているようです。

また、コードが何をすべきかについて、より明確にするようにしてください。

于 2012-06-13T12:25:40.023 に答える