鱼C论坛

 找回密码
 立即注册
查看: 1337|回复: 5

[已解决]C PrimerPlus上例题求助!!!不会悬赏,求顺便告知怎么悬赏!!!

[复制链接]
发表于 2018-9-18 14:35:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Sa。。 于 2018-9-18 14:40 编辑
  1. #include <stdio.h>
  2. #include <string.h>//为了使用strcmp()
  3. #include <stdbool.h>
  4. #include <Windows.h>

  5. enum spectrum{red, orange, yellow, green, blue, violet};
  6. const char * colors[] = { "red", "orange", "yellow", "green", "blue", "violet" };

  7. #define LEN 30

  8. int main(void)
  9. {
  10.         char choice[LEN];
  11.         enum spectrum color;
  12.         bool color_is_found = false;

  13.         puts("Enter a color (empty line to quit)");
  14.         while (gets(choice) != NULL && choice[0] != '\0');
  15.         {
  16.                 for (color = red; color <= violet; color++)
  17.                 {
  18.                         if (strcmp(choice, colors[color]) == 0)
  19.                         {
  20.                                 color_is_found = true;
  21.                                 break;
  22.                         }
  23.                 }
  24.                 if (color_is_found)
  25.                         switch (color)
  26.                         {
  27.                         case red:puts("Rose are red");
  28.                                 break;
  29.                         case orange: puts("Poppies are orange.");
  30.                                 break;
  31.                         case yellow: puts("Sunflowers are yellow.");
  32.                                 break;
  33.                         case green: puts("Grass is green.");
  34.                                 break;
  35.                         case blue: puts("Bluebells are blue.");
  36.                                 break;
  37.                         case violet: puts("Violets are violet.");
  38.                         }
  39.                 else
  40.                         printf("I don't know about the color %s\n", choice);
  41.                 color_is_found = false;
  42.                 puts("Next color, please (empty line to quit): ");
  43.         }
  44.         puts("Good bye!");

  45.         system("pause");
  46.         return 0;
  47. }
复制代码


这是C Primer Plus上的一段代码,gets()输入回车以后应该终止读取,但我这个程序没有,不知道怎么回事。如图,要按两次回车才停止读取!
最佳答案
2018-9-18 16:43:26
哈哈哈,我看到你的问题了, while() 后面不可有冒号,你需要多一次回车是因为重新要求输入了
捕获1.PNG
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-18 15:00:43 From FishC Mobile | 显示全部楼层
第几版的?第几页?标准输入缓冲区的问题吧。
悬赏的话在发帖的时候,左上方的菜单里选。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-18 15:05:18 | 显示全部楼层
claws0n 发表于 2018-9-18 15:00
第几版的?第几页?标准输入缓冲区的问题吧。
悬赏的话在发帖的时候,左上方的菜单里选。

第五版409页,枚举值那里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-18 15:24:33 From FishC Mobile | 显示全部楼层
Sa。。 发表于 2018-9-18 15:05
第五版409页,枚举值那里

我的是 6 版,内容应该一样,他是自己定义了一个 s_gets() 的函数吧? gets() 需要遇到 newline 回车的意思,或者 eof 才算读取完毕。
你的程序也算失败吧?进入不了 switch
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-18 16:43:26 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
哈哈哈,我看到你的问题了, while() 后面不可有冒号,你需要多一次回车是因为重新要求输入了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-18 17:13:45 | 显示全部楼层
claws0n 发表于 2018-9-18 16:43
哈哈哈,我看到你的问题了, while() 后面不可有冒号,你需要多一次回车是因为重新要求输入了

哦哦哦谢谢谢谢,没注意哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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