我只允許使用下列頭scanf函數的char *字結構只顯示最後輸入
#include <stdio.h>
#include <stdlib.h>
,我定義我的struct student
如下:
struct dict
{
char* word;
struct dict* link;
};
有很多功能,但只有一個功能,我現在有問題。 該函數在鏈接的末尾插入一個結構字典,並帶有某個名稱。
struct student *Linsert(struct dict *list, char *name)
{
struct student *pnew;
struct student *pn;
int exist = 1;
pnew = (struct dict *)malloc(sizeof(struct dict));
pnew -> next = NULL;
pnew -> name = name;
if (list != NULL)
{
for (pn = list; pn -> next != NULL; pn = pn -> next) ;
pn -> next = pnew;
}
else
list = pnew;
return list;
}
使用下面的函數,
//print all the values in the list void printList(struct dict* list);
我這樣做:
int main(void)
{
struct dict *list = NULL;
char *name;
while (1) {
scanf("%s", name);
if (name == 'Q')
break;
list = Linsert(list, name);
printList(list);
}
return 0;
}
比方說輸入,我輸入3 apple
banana
和orange
,我的結果顯示了我最後的三個輸入。
這裏有什麼問題?
始終用**所有警告**進行編譯,並且不要忽略其中的任何警告。 –
請看看[如何格式化您的問題](http://stackoverflow.com/editing-help),特別是下一次如何格式化代碼塊。 –
@KerrekSB'-Wall -Wextra -Werror'總是會導致更好的代碼':)' –