如何在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/