0
これで、scanf(cmd入力リダイレクト)を使用してtxtファイルの要素を読み取るプログラムを作成しています。ファイル内のすべてのエントリに対して新しいノードを作成し、リストの末尾に追加する必要があります。ここに私のコードは、これまでのところです:それを初期化します.txtファイルの各エントリに新しいノードを作成します。
struct Elem{
int Atnum;
char Na[31];
char Sym[4];
};
struct nodeTag {
struct Elem entry;
struct nodeTag *pNext; // pointer to the next node
};
typedef struct nodeTag Node;
機能はこれです:
Node *
InitializeList(Node *pFirst, int n)
{
int i;
Node *head, *temp = 0;
pFirst = 0;
for (i=0; i<n; i++){
head = (Node *)malloc(sizeof(Node));
scanf("%d", &head->entry.AtNum);
scanf("%s", head->entry.Na);
scanf("%s", head->entry.Sym);
if (pFirst != 0)
{
temp->pNext = head;
temp = head;
}
else
{
pFirst = temp = head;
}
fflush(stdin);
temp->pNext = 0;
}
return pFirst;
}
そして最後に、今
void
Print(Node *pFirst)
{
Node *temp;
temp = pFirst;
printf("\n status of the linked list is\n");
while (temp != 0)
{
printf("%d %s %s", temp->entry.AtNum, temp->entry.Na, temp->entry.Sym);
temp = temp -> pNext;
}
}
にそれを印刷し、私はプログラムを取得することはできません適切に実行する。実行時エラーは発生しませんが、出力はゴミと思われます。私はこれのために何時間も働いていて、私はその頭の中に頭を浮かべていません。ご協力ありがとうございました!
逆順に並べるので、 'InitializeList()'から* pFirst *ではなく* temp *を返す必要があります。そして、 'temp-> pNext = 0;'と 'pFirst = temp'という行の上に与えられたものは間違っています。 – 0andriy
[fflush(stdin) 'の使用](http://stackoverflow.com/questions/2979209/using-fflushstdin)に注意してください。あなたがWindows上にいなければ、必ずしもあなたが望む/期待していることはしません。 –
お元気ですか、あなたはまだ返信していないと言いましたので、あなたは私の答えについてのフィードバックをくれますか?私はあなたを助ける準備ができている – UrbiJr