如何解决Do while语句中的问题不断循环
我试图强迫用户仅在R,C或T之间选择。但是我发表了声明,并不断要求我称其为输入,因为它试图说给定的信不是其中之一。还要确认我尝试打印hello,但没有打印出来,这意味着该软件仍然停留在do while语句中。有什么帮助吗? 我的代码:
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R,C ou T\n");
scanf("%c",&a);
} while (!((a == "R") ||(a == "T") ||(a == "C") ));
printf("hey");
return 0;
}
解决方法
对于初学者使用
scanf( " %c",&a );
^^^^^
代替
scanf( "%c",&a );
^^^^
否则,该函数还将读取空格。
"R"
,"T"
,"C"
是类型为char[2]
的字符串文字。在极少数例外的表达式中使用,它们会转换为指向char *
类型的第一个元素的指针。
实际上,您正在尝试将字符与指针进行比较。
您不必使用字符串,字面量'R'
,'T
,'C'
所以循环的条件看起来像
} while ( a != 'R' && a != 'T' && a != 'C' );
,
看到这里有一个很小的问题。我假设您刚刚学习了像python这样的语言,这使您感到困惑。在C语言中,双引号内的字符串表示字符串,而单引号内的字符串表示char。检查一下
var c = "C";//This is a string
var c = 'C';//This is a char
因此,您正在比较一个永远不会相等的字符串和char
至于你的代码,写
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R,C ou T\n");
scanf("%c",&a);
} while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
printf("hey");
return 0;
}
,
您正在将字符a与不是您想要的字符串“ R”,“ T”和“ C”进行比较。您要与这样写的单个字符进行比较:
while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
请注意,单引号''用于编写字符常量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。