Abbruchbedingung wird mit Scanf nicht erfüllt.

Gast #3957855
Lesenswert?

Moin Moin liebe Gemeinde,

wenn ich Scanf benutze dann übersieht er das Abbruchkriterium.
Wenn ich Scanf auskommentiere und das auskommentierte Scanf ++ benutze, 
dann funktioniert es wie gedacht.
Mit dem scanf jedoch fragt er mich unendlich viele Spielzüge ab.
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <stdint.h>
4

5
#define xMax 3
6
#define yMax 3
7
#define SpielzugMax 9
8

9
void Spielfeld_Aus(void);
10
void Spielfeld_Erstellen(void);
11
char Spielfeld[xMax][yMax];
12

13
int main()
14
{
15
    uint8_t xPos;
16
    uint8_t yPos;
17
    uint8_t A_S=0;
18
    uint8_t Spielzug;
19
    uint8_t SpielzugCnt=0;
20

21
    Spielfeld_Erstellen();
22
    Spielfeld_Aus();
23

24
    while (SpielzugCnt < 9)
25
    {
26
        printf("Spieler 1 Spielzug wählen 1-9\n");
27
        scanf("%i",&Spielzug);//Hier ist das Scanf
28
        //Spielzug++;
29
        SpielzugCnt ++;
30

31
        switch(Spielzug)
32
        {
33
            case 1: Spielfeld[0][0]='O'; break;
34
            case 2: Spielfeld[1][0]='O'; break;
35
            case 3: Spielfeld[2][0]='O'; break;
36
            case 4: Spielfeld[0][1]='O'; break;
37
            case 5: Spielfeld[1][1]='O'; break;
38
            case 6: Spielfeld[2][1]='O'; break;
39
            case 7: Spielfeld[0][2]='O'; break;
40
            case 8: Spielfeld[1][2]='O'; break;
41
            case 9: Spielfeld[2][2]='O'; break;
42
        }
43
        Spielfeld_Aus();
44

45
        printf("Spieler 2 Spielzug wählen 1-9\n");
46
        //scanf("%i",&Spielzug);
47
        Spielzug++;
48
        SpielzugCnt ++;
49

50
        switch(Spielzug)
51
        {
52
            case 1: Spielfeld[0][0]='X'; break;
53
            case 2: Spielfeld[1][0]='X'; break;
54
            case 3: Spielfeld[2][0]='X'; break;
55
            case 4: Spielfeld[0][1]='X'; break;
56
            case 5: Spielfeld[1][1]='X'; break;
57
            case 6: Spielfeld[2][1]='X'; break;
58
            case 7: Spielfeld[0][2]='X'; break;
59
            case 8: Spielfeld[1][2]='X'; break;
60
            case 9: Spielfeld[2][2]='X'; break;
61
        }
62
        Spielfeld_Aus();
63
    }
64

65
    system("Pause");
66

67
    return 0;
68
}
69

70

71
void Spielfeld_Erstellen(void)
72
{
73
    uint8_t xPos=0;
74
    uint8_t yPos=0;
75

76

77
    while(yPos < yMax)
78
    {
79
        while(xPos < xMax)
80
        {
81
            Spielfeld[xPos][yPos]='u';
82
            xPos++;
83
        }
84
        xPos=0;
85
        printf("\n");
86
        yPos++;
87
    }
88
}
89

90

91
void Spielfeld_Aus(void)
92
{
93
    uint8_t xPos=0;
94
    uint8_t yPos=0;
95

96

97
    while(yPos < yMax)
98
    {
99
        while(xPos < xMax)
100
        {
101
            printf("%c",(Spielfeld[xPos][yPos]));
102
            xPos++;
103
        }
104
        xPos=0;
105
        printf("\n");
106
        yPos++;
107
    }
108
}

Mit freundlichen Grüßen

Braunweissgruen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren