【发布时间】:2017-04-08 09:46:50
【问题描述】:
为什么即使 sex[i] 具有 M char 的值,以下 IF 语句的计算结果也不为真?
for (i=0;i<3;i++)
if (sex[i] == 'M' || sex[i] == 'm')
我要做的是创建一个字符数组,其中包含字符串或字符的多个值。在这种情况下,它是一个字符并且它在 if 函数之外工作,如果我打印 sex[0] 我得到 M。
哦,我知道变量需要这样声明
char sex[size][sizeofstring]
整个代码:
#include <stdio.h>
int main() {
char name[10][256], sex[10][256];
int i;
for (i=0;i<3;i++) {
printf ("Insert the name of the person %d and her gender, M for male F for female\n", i+1);
scanf("%s", name[i]);
scanf(" %c", sex[i]);
}
for (i=0;i<3;i++)
if (*sex[i] == 'M' || *sex[i] == 'm')
printf ("\n%s", name[i]);
for (i=0;i<3;i++)
if (sex[i] == 'F' || sex[i] == 'f')
printf ("\n%s", name[i]);
}
【问题讨论】:
-
等等,你为什么要分配一个二维数组?
-
因为我在谷歌上搜索了如何为 char 创建一个数组,这就是他们告诉我的。我假设第二个维度将保存字符串具有的字符数量,第一个维度是您希望数组具有多少个字符串。
-
那么,试试
if (*sex[i] == 'M' || *sex[i] == 'm') -
因为
sex[i]是一个字符串,而'M'或'm'只是一个字符(?)
标签: c if-statement char comparison