在用结构体建立一个单链表时分别用gets()函数和scanf()函数为节点中元素赋值,代码如下
struct book
{
double price;
char name[30];
struct book *next;
};
struct book *creatlist(int n)
{
struct book *pnew, *ptail, *head;
pnew = (struct book *)malloc(sizeof(struct book));
gets(pnew->name);
scanf("%lf", &pnew->price); //在实际运行时程序会跳过这条语句
head = ptail = pnew; //在这里添加断点调试
for(int i; i < n; i++)
{
pnew = (struct book *)malloc(sizeof(struct book));
gets(pnew->name);
scanf("%lf",&pnew->price);
ptail->next = pnew;
ptail = pnew;
ptail->next = NULL;
}
return head;
}
.......
可以看到在输入字符串后没有输入数据而程序直接跳过了scanf()语句。
但是在一般的情况下,不涉及单链表,这两个函数连用就没有影响,如下
让人迷惑额