gpt4 book ai didi

c - 开关和默认: for C

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:06 25 4
gpt4 key购买 nike

对不起,如果这听起来像是一个非常基本的问题,我是第一次来这里!

我在为 C 编写代码时遇到了一些困难,特别是对于开关和该开关的默认值。下面是一些示例代码:

#include<stdio.h>

int key;
main()
{
while((key=getchar())!=EOF)
{
printf("you pressed %c \n",key);
switch(key){
case'0':
case'1':
case'2':
case'3':
printf("it's a numeral\n");
break;
default:
printf("it's not a numeral\n");
}
}
}

实际代码要长一些,这纯粹是一个例子。

所以代码编译它并执行它,但我得到:

“你按了 1,它是一个数字,你按了 ,它不是一个数字。”

我的代码似乎“失败”并在没有引用任何一个的情况下重复自己。如果有人能提供帮助,那就太好了,因为这是教科书中的一个例子,我完全被困住了!

最诚挚的问候。

最佳答案

您需要考虑输入 Enter 键,这会在 *nix 系统上产生一个 '\n'。我不确定在 Windows 系统上按 Enter 键有什么作用。

这是篡改的原始代码,用于吃掉返回键。

#include<stdio.h>

int key = 0;
main()
{
while((key=getchar())!=EOF)
{
if('\n' == key)
{
/* Be silent on linefeeds */
continue;
}

printf("you pressed %c \n",key);
switch(key){
case'0':
case'1':
case'2':
case'3':
printf("it's a numeral\n");
break;

default:
printf("it's not a numeral\n");
}
}
}

您可能出于特定原因使用 getchar(),但我在 C 中的经验通常涉及读取整行,而像 scanf 这样的 RTL 函数会吃掉行终止符给你。

关于c - 开关和默认: for C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10677584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com