Bufor w stdout - nie wyswietlanie linii printf

0

Pierwszy raz zetknalem sie z czyms takim, nie wyswietla mi printf'a za printf'em, moglby mi ktos wyjasnic o co chodzi i dlaczego tak jest ? Bo wiem ze fflush(stdout) na koncu zalatwia sprawe, ale nie rozumiem co za nieprawidlowosc tu zaszla, jak bufor wyjscia sie 'zatkal' ?

void boardShow(char *tab,int gamer){
  char OX;
  if(gamer==0)OX='O';
  else if(gamer==1)OX='X';
  printf("\033[2J");
  printf(" %c | %c | %c\n", tab[0], tab[1], tab[2]);
  printf("-----------\n");
  printf(" %c | %c | %c\n", tab[3], tab[4], tab[5]);
  printf("-----------\n");
  printf(" %c | %c | %c\n", tab[6], tab[7], tab[8]);
  printf("\nPlayer %d, please enter the number of the square\n",gamer);
  printf("\nwhere you want to place your %c: ",OX);
}

nie wyswietla ostatniego printf'a

0

Nie wyświetla ostatniego printfa, ponieważ konsola czeka na znak nowej linii, wtedy jest wewnętrznie wykonywany automatyczny flush.

0

No ale sa tam trzy "\n" przed ostatnim zdaniem

0

Ma być znak nowej linii po zdaniu, aby zostało ono wyświetlone.

printf("\nwhere you want to place your %c: ",OX);

A tutaj masz na początku, więc wyświetlasz to, co było wcześniej w buforze.

0

jak napisał @Patryk27 albo 'n' na koiec, albu flushować musisz: http://kaczus.ppa.pl/art/Skrzynia_porad,18.html#flush

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