|
5鱼币
本帖最后由 Whisper微风 于 2013-3-18 22:38 编辑
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #define SIZE 50
- struct film{
- char Name[SIZE];
- int score;
- struct film *next;
- };
- int main(void)
- {
- struct film *current, *prv, *head = NULL;
- char input[SIZE];
- puts("输入电影名称");
- while(gets(input) != NULL && input[0] != '\0')
- {
- current = (struct film *)malloc(sizeof(struct film));
- if( head == NULL )
- head = current;
- else
- prv -> next = current;
-
- current -> next = NULL;
- strcpy(current -> Name , input);
- puts("输入电影的 评分 (0--10分)");
-
- scanf("%d", ¤t -> score);
- while(getchar() != '\n')
- continue;
- puts("输入下一部电影(输入为空 结束输入)");
- prv = current;
- }
- /*打印列表*/
- if( head == NULL )
- printf("error");
- else
- puts("以下是输入的列表");
- current = head;
- while(current != NULL)
- {
- printf("%s%9d\n",current->Name,current->score);
- current = current->next;
- }
- /*释放空间*/
- current = head;
- while(current != NULL)
- {
- free(current);
- current = current->next;
- }
- return 0;
- }
复制代码 while(getchar() != '\n')
continue; 这个语句的作用是什么? 具体是怎么执行的?
如果没有此句,函数将不能够循环下去。。。这是为什么呢?
|
最佳答案
查看完整内容
清空输入流用的,没有此句,你敲进去的回车会被当做字符而被scanf扫入,然后scanf就会出错。然后就很可能会出现死循环。用一个while循环不停地获得字符,直到获取回车为止,就是清空你前面一次的输入。保证你这一次的scanf扫入的时候,里面没有上一次的残留数据。
|