我的代码看起来像这样,我无法处理解决它。它必须是一个时间While循环过来两次
#include<stdio.h>
int main()
{
char x ;
printf("enter.\n");
scanf("%c",&x);
while(x!='D' && x!='d')
{
printf("diomond.\n");
scanf("%c",&x);
}
}
我的代码看起来像这样,我无法处理解决它。它必须是一个时间While循环过来两次
#include<stdio.h>
int main()
{
char x ;
printf("enter.\n");
scanf("%c",&x);
while(x!='D' && x!='d')
{
printf("diomond.\n");
scanf("%c",&x);
}
}
改变这一行
scanf("%c",&x);
到
scanf(" %c",&x); /* Notice the space in the format specifier */
原因运行两次是,当你输入一个字符,有一个换行符在左输入流在下一次迭代中消耗。在格式字符串中使用前导空格将告诉scanf()忽略空格。
非常感谢你提供这个有用的评论,它正确地解决了我的问题。 –
在%c
说明符前使用空格。这将有助于吃掉换行符\n
,在按下后输入后面的scanf
。
scanf(" %c",&x);
// ^space
while(x!= 'D'&& x!='d')
{
printf("diomond.\n");
scanf(" %c",&x);
// ^space
}
目前还不清楚你在问什么。请编辑您的帖子,并附带*清晰*和*简明*的描述。 –
当然:'int main(int argc,char * argv [])'不客气 – P0W
你的代码不能编译。你还没有问过一个实际的问题。您的缩进会使代码难以阅读。如果你想得到答案,请修正这些问题。 – SirDarius