Scanf Dont扫描char第二次在循环中,任何想法?

时间:2014-11-25 17:00:19

标签: c

    n=10;
    for(i=1;i<n;i++){
        random = 1 + rand() % 3;  
        printf("\n\nIzdari savu izveli ==>");
        scanf("%c", &zime);
        if( zime=='a' )
            printf("\nTu uzliki AKMENI");
        else if( zime=='s' )
            printf("\nTu uzliki SKERES");
         else if( zime=='p' )
            printf("\nTu uzliki PAPIRU");

        if( random==1 )
            printf("\nDators uzlika AKMENI");
        else if( random==2 )
            printf("\nDators uzlika SKERES");
        else if( random==3 )
            printf("\nDators uzlika PAPIRU");

        if( random==1&&zime=='a' || random==2 && zime=='s' || random==3 && zime=='p')
        printf("\n\nNeizskirts!!!");
    else if( random==1&&zime=='p' || random==2&&zime=='a' || random==3&&zime=='s' )
        printf("\n\nTu Uzvareji!!!");
    else if( random==1&&zime=='s' || random==2&&zime=='p' || random==3&&zime=='a' )
        printf("\n\nTu Zaudeji!!!");
    getch();
    }

为什么第二次循环开始时它只是跳过scanf, 并跳转到if( random==1 ), 然后跳回scanf并让你扫描一个字符?

输出看起来像

a

这只是石头纸scizors游戏,但用其他语言。

1 个答案:

答案 0 :(得分:1)

在第一次输入结束时有一个换行符\n,在第二次循环期间被scanf()选中。

将您的scanf称为:

scanf(" %c", &zime);