0
2dリンクリストを作成しようとしています。その要素にアクセスしようとすると、セグメント化エラーが発生します。ここで2dリンクリスト要素の作成方法とアクセス方法
は、私はいくつかのデバッグを作っコード
struct Node{
char *data;
int count;
struct Pair *p;
struct Node *next;
};
struct Pair{
char *data;
int count;
struct Pair *next;
};
void insertPairs(char *word1, char *word2, struct Node **head){
struct Node *ptr = *head;
while(ptr != NULL) {
if(strcmp(ptr->data, word1) == 0){
struct Pair *pairPtr = ptr->p;
while(pairPtr != NULL){
if(strcmp(pairPtr->data, word2) == 0){ //Segmentation Fault
pairPtr->count = pairPtr->count + 1;
break;
}
}
struct Pair *tmp = (struct Pair*) malloc(sizeof(struct Pair));
tmp->data = word2;
tmp->count = 1;
tmp->next = pairPtr;
pairPtr = tmp;
break;
}
ptr = ptr->next;
}
}
の一部です。
if(strcmp(ptr->data, word1) == 0)
が動作しますが、上記されていないのはなぜこの行は私にif(strcmp(pairPtr->data, word2) == 0)
をセグメンテーションフォールトを与えますか?これを修正するにはどうすればよいですか?
問題はpairPtr-> data' 'ですが、それは' NULL'すべきではないので、 'while'文で' NULL'チェックがあります。 – Pareidolia
'while'ステートメントでは、' pairPtr'が 'NULL'でないことだけを確認します。その中の 'data'フィールドが' NULL'ではないことを確認しません。 – LiranT