鱼C论坛

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

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

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

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

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

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

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

#define LEN 30

int main(void)
{
        char choice[LEN];
        enum spectrum color;
        bool color_is_found = false;

        puts("Enter a color (empty line to quit)");
        while (gets(choice) != NULL && choice[0] != '\0');
        {
                for (color = red; color <= violet; color++)
                {
                        if (strcmp(choice, colors[color]) == 0)
                        {
                                color_is_found = true;
                                break;
                        }
                }
                if (color_is_found)
                        switch (color)
                        {
                        case red:puts("Rose are red");
                                break;
                        case orange: puts("Poppies are orange.");
                                break;
                        case yellow: puts("Sunflowers are yellow.");
                                break;
                        case green: puts("Grass is green.");
                                break;
                        case blue: puts("Bluebells are blue.");
                                break;
                        case violet: puts("Violets are violet.");
                        }
                else
                        printf("I don't know about the color %s\n", choice);
                color_is_found = false;
                puts("Next color, please (empty line to quit): ");
        }
        puts("Good bye!");

        system("pause");
        return 0;
}

这是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-11-30 09:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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