Podwójne wyświetlanie

0

Witam
Przy pisaniu jednego z projektów na studiach natrafiłem na dziwne zachowanie się funkcji printf. Mam taki oto kawałek kodu:

while (liczba<4)//rozstawia 4 statki
            {
                printf("Podaj wspolrzedna: \n");
                poczatek=fgets(wsp, 3, stdin);
                
                int i; int j;
                for (i=0; i<10; i++)
                {
                    for (j=0; j<10; j++)
                    {
                        porownanie=strcmp(poczatek,koordynaty[i][j]); 
                         
                        if (porownanie == 0)
                        {//jak znajdzie pasujace koordynaty
                            if (plansza_gry_gracz[i+2][j+2] != ' ') //sprawdza czy pole nie jest juz zajete
							{
                            printf("\033[1;31mWSPOLRZEDNA JEST ZAJETA LUB NIEWLASCIWA\N PODAJ INNA\033[0m\n");
                            }
                            else
                                {
                                printf("\033[1;32mDODANO WSPOLRZEDNA\033[0m\n");
                                plansza_gry_gracz[i+2][j+2]=M1;//umieszcza sybol jendomasztowca pod wskazanymi wspolrzednymi
                                liczba++;
                                }
                        }
                    }
                }
                
			}//koniec whila

Niepokoi mnie to, że za każdym razem funkcja printf("Podaj wspolrzedna: \n"); jest wyświetlana dwa razy, chociaż powinna być tylko raz. Jedyna pętla w której występuje jest właśnie ten while. Macie może pomysł co może być przyczyną takiego zachowania. Sprawdzane na dwóch niezależnych systemach i kompilatorach. efekt taki sam.

Pozdrawiam

0

Albo rozszerz bufor dla wsp, albo po fgets daj:
while(getchar()!='\n') {}

1 użytkowników online, w tym zalogowanych: 0, gości: 1