2013-10-27 54 views
-4

我的代码看起来像这样,我无法处理解决它。它必须是一个时间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); 
    } 
} 
+0

目前还不清楚你在问什么。请编辑您的帖子,并附带*清晰*和*简明*的描述。 –

+0

当然:'int main(int argc,char * argv [])'不客气 – P0W

+0

你的代码不能编译。你还没有问过一个实际的问题。您的缩进会使代码难以阅读。如果你想得到答案,请修正这些问题。 – SirDarius

回答

1

改变这一行

scanf("%c",&x); 

scanf(" %c",&x); /* Notice the space in the format specifier */ 

原因运行两次是,当你输入一个字符,有一个换行符在左输入流在下一次迭代中消耗。在格式字符串中使用前导空格将告诉scanf()忽略空格。

+0

非常感谢你提供这个有用的评论,它正确地解决了我的问题。 –

1

%c说明符前使用空格。这将有助于吃掉换行符\n,在按下后输入后面的scanf

scanf(" %c",&x); 
    // ^space 

while(x!= 'D'&& x!='d') 
{ 
    printf("diomond.\n"); 
    scanf(" %c",&x); 
    // ^space 
}