Eclipse i obsługa konsoli

Eclipse i obsługa konsoli
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

Witam, mam taki kod.

Kopiuj
#include <stdio.h>

int main(void)

{
	int c;

	while ((c = getchar() )!= EOF)
	{
		printf("\n Podałeś: ");
		putchar(c);
	}
	return 0;
}

I gdy go puszczam na kosnoli nic nie mam. Wpisuje przykładowo

Kopiuj
A 
B
C

i nic, ale gdy klilkne terminate to nagle pojawia się:

Kopiuj
A
B
C

 Podałeś: A
 Podałeś: 

 Podałeś: B
 Podałeś: 

 Podałeś: C
 Podałeś:

Nie rozumiem.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Bo I/O często jest buforowane. Komputer nie jest głupi i wie że wypisanie czegoś na ekran dużo kosztuje, więc woli wypisać dużo na raz a nie po znaku. A już w ogóle mieszkanie putchar z printf to jakiś darmat. Nie mogłeś
printf("\n Podałeś: %c", c);?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

Ja się uczę C i jest trochę dziwny jak na razie ale to kwestia przyzwyczajenia : )
A da się to jakoś zrobić by działało to tak żeby wypisywał od razu ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Wystarczyłoby gdybyś nie mieszał różnych funkcji ;) Jakbyś czytał przez scanf i pisał przez printf to by się samo synchronizowało. Poza tym możesz używać fflush na stdout żeby mieć pewność że się nie zbuforuje coś.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0
Kopiuj
#include <stdio.h>

int main(void)

{
	int c =1;




	while ((scanf("%d",c)) != EOF)
	{
		printf("%d",c);
	}
	return 0;
}
 

Teraz tak mam i jak podaje jakaś literkę to ją zjada i tyle.

O co chodzi z tym flush na stdout ? bo nie rozumiem : (

Z tymi put ogarnąłem. Szkoda że od razu nie wyświetla.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Zjada? Cud że się nie wysypuje... Doczytaj jakie parametry ma scanf. Podpowiem że inne niż printf...

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

To jeszcze przede mną (w 3 rozdziale są scanf i printf). Czy da się zrobić tak żeby ta konsola z putchar od razu wypisywała ? Jak puszcze normalnego .exe to działa.

Edit1.

Kopiuj
#include <stdio.h>

int main(void)

{
	int c ;
	c = getchar();
	c = EOF;
	putchar(c);

}

Nawet przy takim prostym kodzie on od razu nie wyświetla.

Chociaż powoli zaczynam sie przyzwyczajać do tego języka.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.