AB 120 CB 60 のような複数の行で構成されるファイル text(input.txt) を読み込もうとしています...
さて、今、そのファイルで複数回繰り返されている可能性のある名前をに転送しようとしていますそれらが一度だけ表示されるべきである二重ポインタ。以下の私のコードでは、それらのいくつかを取得していますが、セグメンテーション違反も発生しています。何が欠けているのか、何が間違っているのかわかりません。あなたの少しの助けが私を大いに助けてくれます。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
int i=1, state=0, k, dist;
int** myMat;
char *city1, *city2, **matnames;
FILE* p;
city1 = (char*) malloc(sizeof(char));
city2 = (char*) malloc(sizeof(char));
matnames = (char**) malloc(sizeof(char*));
myMat = (int**) malloc(sizeof(int*));
p = fopen(argv[1],"r");
/************************************************************/
matnames[0] = (char*) malloc(sizeof(char));
matnames[1] = (char*) malloc(sizeof(char));
matnames[2] = (char*) malloc(sizeof(char));
matnames[2] = NULL;
fscanf(p, "%s %s %d", city1, city2, &dist);
strcpy(matnames[0],city1);
strcpy(matnames[1],city2);
/************************************************************/
while( fscanf(p,"%s %s %d",city1,city2, &dist) != EOF){
for(k=0; matnames[k]!=NULL; k++){
if( strcmp(matnames[k], city1) != 0){
state++;
}
}
if(state == k){
matnames[k] = (char*) malloc(sizeof(char));
strcpy(matnames[k], city1);
matnames[k+1] = (char*) malloc(sizeof(char));
matnames[k+1] = NULL;
}
state = 0;
for(k=0; matnames[k] != NULL;k++){
if( strcmp(matnames[k], city2) != 0){
state++;
}
}
if(state == k){
matnames[k] = (char*) malloc(sizeof(char));
matnames[k+1] = (char*) malloc(sizeof(char));
strcpy(matnames[k], city2);
matnames[k+1] = NULL;
}
state = 0;
}
return 0;
}