私のファイルには次のパターンがあります。
word1 word2 word3
wordzz word33 word2431 word341
等々。
ここで、ファイル全体を構造の配列で読み取ります。配列の各エントリは、ファイルの各行のリンクされたリストを維持します。
コード全体を説明するのはちょっと難しいですが、ここに問題があります。
次のことをしようとすると、特定の場所で
printf("\n%s",ptr1->name);
puts(ptr1->name);
リンクされたリストの先頭へptr1
のptrです。(1 行目とします)
name フィールドは名前です。つまりword1,word2 etc.
、出力は次のようになります。
word1word1
word2word2
word3
word3
2回印刷されないのはなぜですか? この問題全体strcmp
により、リストの最後の単語にたどり着くことができません。
親切に助けてください。
PS
私がするときも
printf("%d",ptr1);
の 3 つの異なる値を出力しますがptr
、いずれも ではありませんNULL
。
同じ構造の 2 つの同様の配列があります。同じ関数を使用して 2 つの配列に値を設定します。今
node* ptr,*ptr1;
ptr=first[i].ptr;
ptr1=second[i].ptr;
while(ptr!=NULL)
{
printf(" \n1");
printf(" %s", ptr->name); // Works Fine
if(!strcmp(ptr->name,"string"))
{
while(ptr1!=NULL)
{
printf("A %s ",ptr1->name);// Problem
fflush(stdout); // EDITS AS ASKED BY USER `pmg`
puts(ptr1->name);
if(!strcmp(ptr1->name,strt))
{
printf("\n 4\n");
return 1;
}
else
{
ptr1=ptr1->next;
}
}
return 0;
}
else
{
ptr=ptr->next;
}
}
どうすれば問題が発生するか @ 言及された場所であり、@ '正常に動作する' 場所ではありません。
正常に動作すると、すべてのノード (名前) が表示されますが、問題の時点では姓が表示されません。
しかし、問題を解決すると、その名前も表示されます。
このコード スニペットの前に、printf のみを使用して 2 番目の配列を出力します。すべてのノード (名前) を出力します。後で印刷されない理由を教えてもらえますか?