gpt4 book ai didi

c - 开关/外壳问题

转载 作者:行者123 更新时间:2023-11-30 19:55:59 30 4
gpt4 key购买 nike

对于C语言,我知道我很接近,但是对于输入的任何字符,打印输出都是“辅音”。我的 switch case 语句有什么问题。我需要 if 语句吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
char name;
printf("Enter a character: ");
scanf_s("%c", &name);

switch (name)
{
case 'a':
printf("Vowel");
break;
case 'e':
printf("Vowel");
break;
case 'i':
printf("Vowel");
break;
case 'o':
printf("Vowel");
break;
case'u':
printf("Vowel");
break;
case 'y':
printf("Sometimes");
break;
default:
printf("Consonant");
}
return 0;
}

最佳答案

请注意 scanf_s() 的 Microsoft 页面说:

In the case of characters, a single character may be read as follows:

char c;

scanf_s("%c", &c, 1);

您的 scanf_s() 调用失败,但您没有检查结果,所以您不知道这一点。

始终检查输入函数的结果!

并确保您已阅读您正在使用的功能的手册页。

使用"%c" 作为格式字符串来跳过空格可能也是一个好主意。不过,这是稍后的改进。

<小时/>

default: case 标签中的代码后面没有 break;。这不是一个好主意。

您可以使用:

if (scanf_s("%c", &name, 1) == 1)
{
switch (name)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Vowel\n");
break;
case 'y':
printf("Sometimes\n");
break;
default:
printf("Consonant\n");
break;
}
}
else
fprintf(stderr, "Failed to read a character\n");

请注意,所有大写字母、标点符号、空格和控制字符均被视为辅音。这并不完全准确。

关于c - 开关/外壳问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793358/

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