gpt4 book ai didi

c - 如何在C编程中控制 'char'类型的用户输入?

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

如何在C编程中控制用户对char类型的输入??

问题:如果用户将“男性”作为第一个输入,那么程序不会要求提供“年龄”

输出

输入性别(男/女):男

输入年龄:

您的性别是男(M)

你的年龄:71//垃圾值

#include <stdio.h>

int main()
{
char gender;
int age;

printf("\nEnter gender(M/F):");
scanf("%c", &gender);

printf("\nEnter age:");
scanf("%d", &age);

if(gender=='M'){
printf("\nYour Gender is Male(%c)",gender);
}else{
printf("\nYour Gender is not Male(%c)",gender);
}

printf("\nYour Age a:%d",age);

return 0;
}

预期输出:如果用户输入 'Male'/'Female'/'M'/'F' 然后按回车键然后控制台会要求提供年龄

输入性别(男/女):男

输入年龄:23​​

你的性别是男(M)//基于&gender

您的年龄:23​​

最佳答案

你想读取一个字符串,但你正在使用一个字符,所以将你的代码更改为:

char gender[7];
scanf("%6s", gender);
...
if (gender[0] == 'm' || gender[0] == 'M')
printf("\nYour Gender is Male(%c)", gender[0]);
...

第二种方案:

只需使用 fgets()对于性别,因为您希望能够读取一个字符串,然后是年龄的 scanf(),如下所示:

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

int main()
{
char gender[7];
printf("Enter gender(M/F): ");
if (!(fgets(gender, sizeof(gender), stdin) != NULL)) {
fprintf(stderr, "Error reading Gender.\n");
exit(1);
}
gender[strcspn(gender, "\n")] = 0;
int age;
printf("\nEnter age:");
scanf("%d", &age);

if (gender[0] == 'm' || gender[0] == 'M')
printf("\nYour Gender is Male(%c)", gender[0]);
else if (gender[0] == 'f' || gender[0] == 'f')
printf("\nYour Gender is Female(%c)", gender[0]);
else
printf("Unrecocognized gender\n");
printf("\nYour Age is: %d\n",age);

return 0;
}

输出:

Enter gender(M/F): f
Enter age: 25
Your Gender is Female(f)
Your Age is: 25

关于c - 如何在C编程中控制 'char'类型的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860939/

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