鱼C论坛

 找回密码
 立即注册
查看: 3714|回复: 2

关于。。。。'\n' 问题。。。

[复制链接]
发表于 2013-3-17 16:35:02 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Whisper微风 于 2013-3-18 22:38 编辑
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define SIZE 50
  5. struct film{
  6.         char Name[SIZE];
  7.         int score;
  8.         struct film *next;
  9. };

  10. int main(void)
  11. {
  12.         struct film *current, *prv, *head = NULL;
  13.         char input[SIZE];

  14.         puts("输入电影名称");
  15.         while(gets(input) != NULL && input[0] != '\0')
  16.         {
  17.                 current = (struct film *)malloc(sizeof(struct film));
  18.                 if( head == NULL )
  19.                         head = current;
  20.                 else
  21.                     prv -> next = current;
  22.                
  23.                 current -> next = NULL;
  24.                 strcpy(current -> Name , input);
  25.                 puts("输入电影的 评分 (0--10分)");
  26.                
  27.                 scanf("%d", ¤t -> score);
  28.                 while(getchar() != '\n')
  29.                         continue;                        
  30.                 puts("输入下一部电影(输入为空 结束输入)");
  31.                 prv = current;
  32.         }

  33.         /*打印列表*/
  34.         if( head == NULL )
  35.                 printf("error");
  36.         else
  37.                 puts("以下是输入的列表");
  38.                 current = head;
  39.         while(current != NULL)
  40.         {
  41.                 printf("%s%9d\n",current->Name,current->score);
  42.                 current = current->next;
  43.         }

  44.         /*释放空间*/
  45.         current = head;
  46.         while(current != NULL)
  47.         {
  48.                 free(current);
  49.                 current = current->next;
  50.         }
  51.         return 0;

  52. }
复制代码
while(getchar() != '\n')
continue;  这个语句的作用是什么? 具体是怎么执行的?

如果没有此句,函数将不能够循环下去。。。这是为什么呢?

最佳答案

查看完整内容

清空输入流用的,没有此句,你敲进去的回车会被当做字符而被scanf扫入,然后scanf就会出错。然后就很可能会出现死循环。用一个while循环不停地获得字符,直到获取回车为止,就是清空你前面一次的输入。保证你这一次的scanf扫入的时候,里面没有上一次的残留数据。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 16:35:03 | 显示全部楼层
清空输入流用的,没有此句,你敲进去的回车会被当做字符而被scanf扫入,然后scanf就会出错。然后就很可能会出现死循环。用一个while循环不停地获得字符,直到获取回车为止,就是清空你前面一次的输入。保证你这一次的scanf扫入的时候,里面没有上一次的残留数据。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-17 16:36:45 | 显示全部楼层
{:7_168:}.....{:7_168:}.....{:7_168:}.....{:7_168:}.....{:7_168:}.....{:7_168:}.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 13:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表