今天看了一下枚举,但是这一句代码我看不懂,不知道为什么敲了个回车就可以结束循环了。希望各位可以帮我解答一下这个疑问。代码我是在C PRIMER PLUS上看到的
#include
#include
#include
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("Roses are red.");
break;
case orange: puts("Poppies are orange.");
break;
case yellow: puts("Sunflowers are yellow.");
break;
case green: puts("Grass are green.");
break;
case blue: puts("Bluebells are blue.");
break;
case violet: puts("Violets are violet.")
break;
}
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("Bye!");
return 0;