It'*_*Men 0 c string if-statement
我必须创建一个程序,其中输入必须是2个值之一,'M'或'F'.
这是我创建的用于演示的程序段
do
{
printf("What is your Gender? (M for Male - F for Female) ");
fgets(GenderValue, 16, stdin);
if (GenderValue[0] == '\n')
{
printf("Try again");
getch();
system("cls");
loop=1;
}
else
{
loop = -1;
}
if (GenderValue == "M");
{
loop =-1;
}
else if(GenderValue == "F");
{
loop=-1;
}
else
{
printf("Try again");
getch();
system("cls");
loop=1;
}
}
while(loop > 0); //Checks for NULL input
printf("Gender: %s",GenderValue);
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个整数选择输入,但如果可能的话我想稍后回收它.
到目前为止,该程序调用我的性别值比较"错误",这很好,除了我不知道下一步该做什么,我可以找到一个比较字符串的函数,但我真的不想让我的代码复杂化.
编辑:复制?,真的吗?,给出的例子甚至没有接近帮助我.
编辑2:发现问题,我有;在我的if语句旁边,现在已修复.但说真的,没有人发现这个?
您strcmp用来比较字符串.使用比较运算符==只是比较指针.
但请注意,这fgets将在字符串中留下结尾换行符,因此您需要与eg进行比较"M\n",或者删除换行符(如果有的话).
另外请注意,scrcmp是区分大小写,字符串"M"不等于字符串"m".
您可以使用eg scanf来将输入读作单个字符,并使用eg tolower(或toupper)来获得不区分大小写的比较.
但是,使用scanf会带来其他问题,特别是如果您之后再次使用它来阅读另一个单个字符.这样做的原因是Scanf将换行符留在输入缓冲区中,导致可能的下一次scanf调用"%c"格式为读取换行符.有一个非常简单的解决方案:使用,告诉scanf读取和丢弃前导空格" %c".
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |