c - 如果 char 只能与 if 语句一起使用,它如何与 %c 或 %s 一起使用?
问题描述
我遇到的问题是以下代码。
基本上,我很困惑,因为我知道char
应该与%c
.
然而,我也知道%c
只有一个字符,这意味着为了在 if 语句(“男人”或“女人”)中得到这个词,它必须变成一个%s
.
但是,%s
与char
.
我想问:如果我让 char 保持原样,我的想法和代码会出现什么问题导致结果无法正常输出?
int main() {
char gender;
printf("Enter gender(M/F) : ");
scanf("%c", &gender);
if (scanf("%c", &gender) == 'M') {
printf("Man");
}
else if (scanf("%c", &gender) == 'F') {
printf("Woman");
}
printf("The gender is %c.", gender);
return 0;
}
解决方案
你为什么不改用 getchar() 呢?
int main()
{
printf("Enter gender(M/F) : ");
char gender = getchar();
if (gender == 'M')
printf("Man\n")
if (gender == 'W')
printf("Woman\n")
printf("The gender is %c.\n", gender);
return 0;
}
Also its a good practice to enclosure your reading into a while loop and break from it only if the char that you got from the user is acceptable (Check for EOF or any other char , show an error message and try again.)
Alternative just use scan only one time:
int main()
{
printf("Enter gender(M/F) : ");
char gender;
scanf(" %c", &gender);
if (gender == 'M')
printf("Man\n")
if (gender == 'W')
printf("Woman\n")
printf("The gender is %c.\n", gender);
return 0;
}
推荐阅读
- mysql - 加入 MySQL 关系只输出一行
- sql - 在这个 SQL 查询中表别名的重要性是什么?
- c - C中的内存分段失败
- javascript - 减少javascript中的数组
- c++ - 具有虚拟继承的 dynamic_cast 触发访问冲突
- c++ - 特征 3 SpaseMatrix
- 稀疏矩阵 GCC 8.2 上的乘法警告 - s4sdk - 使用 ODataQueryBuilder 或 VDM 的 OData $batch 请求
- python - Python符号加载,覆盖控制台行
- kubernetes - 你能告诉 kubernetes 先启动一个 pod 吗?
- visual-studio-code - VSCode - 放大弹出对象检查器