Eclipse i obsługa konsoli

0

Witam, mam taki kod.

#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

A 
B
C

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

A
B
C

 Podałeś: A
 Podałeś: 

 Podałeś: B
 Podałeś: 

 Podałeś: C
 Podałeś:

Nie rozumiem.

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);?

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 ?

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ś.

0
#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.

0

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

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.

#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.

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