c - 输入if条件时变量(char)不出现-C
问题描述
我是 C 语言的新手,尝试在 NetBeans 上构建此应用程序时,显然在编译此函数时没有错误。但是,当用户输入自己的姓名和性别时,应用程序通常会输入IF
, ELSE IF
, and ELSE
,但是当输入IF
and时ELSE IF
,用户名不会出现在 printf() 方法中。
#include <stdio.h>
#include <stdlib.h>
ex19(){
char name[100];
char genre;
printf("Enter your name: ");
scanf("%s", &name);
printf("Enter your genre: ");
scanf("%s", &genre);
if (genre == 'M'){
printf("%s you are a BOY", name);
}
else if (genre == 'F'){
printf("%s is GIRL", name);
}
else {
printf("INVALID GENRE");
}
}
main(){
ex19();
}
这个算法会有什么问题?抱歉废话,我是 C 编程的新手,我冒着不看书或视频课程的情况下学习这门语言的风险。现在,我做得很好,因为我以前对 Java、JavaScript、PHP 和现在的 C 语言编程有一定的了解。但是这段代码到底发生了什么?
解决方案
您已定义name
为一个字符数组。数组类型的变量的作用与指针非常相似。在您的scanf
声明中name
,您使用&name
,它是指向该数组的指针。这太过分了。去除 &。
推荐阅读
- arrays - 如何在 MATLAB 的 for 循环中读取变量的内容?
- mysql - Mysql fifo查询股票
- java - 如何反转 fnv1a_64 哈希值?
- c++ - 如何在表头之外定义模板类的模板函数?
- javascript - 为什么我的依赖下拉列表在提交后消失了?
- php - 如何处理分页数据的 RESTful API 限制
- java - 多个浏览器的TestNg非并行执行给出“org.openqa.selenium.NoSuchSessionException:无效的会话ID”
- asp.net-core - 在 F# 中获取泛型参数类型名称
- javascript - Javascript如何将两个子数组合并为一个数组
- amazon-web-services - 检索刚刚上传的文件后的 AWS s3 NoSuchKey 错误