[c/c++] Dane spowrotem do stdin

0

Witam. Problem jest nastepujacy. Chce cos wlozyc do stdin tak aby mogly byc odczytane przez inna funkcje. Przyklad w c(linux):

#include <unistd.h>
#include <string.h>

int main( )
{
char buf[32] = { 0 };
switch( fork() )
{
	case -1: break;
	case 0:
		sleep(2);
		write( STDIN_FILENO, "Tekst", sizeof("Tekst"));
		break;
	default:
		read( STDIN_FILENO, buf, sizeof(buf));
		write( STDOUT_FILENO, buf, strlen(buf));
	break;
}

No ale niestety nie dziala ale mysle ze przyklad mowi wiecej niz slowa. Jak by ktos mogl pomoc bylbym wdzieczny. Pozdrawiam
return 0;
}

0

Dobra rozwiazanie w c++ znalazlem: chodzilo o funkcje putback wywolana na cin. Alte nadal mnie ciekawi jak to zrobic w c. Pozdrawiam

0

Spróbuj z ungetc. Na pewno da się cofnąć odczytany ostatnio znak, ale żeby coś włożyć do stdin ... wątpię, ale spróbuj.

0

Dzieki. Wlasnie o to chodzilo. Zastanawiam sie tylko czemu moje przykladowe rozwiazanie nie dziala ;/. Przeciez stdin jest w linuksie traktowane jako zwykly plik z ktorego powinno byc moc czytac oraz pisac.
Jakby jeszcze ktos wiedzial czemu tak sie dzieje i moglby mi to bardziej objasnic bylbym naprawde wdzieczny. Rozwiazaniem z uzyciem wylacznie biblotek linuksa tez nie pogardze ;). Pozdrawiam

0

do strumienia mozna 'cofnac' dowoly znak, tak wiec jak sie uprze to mozna i wstawic cokolwiek. pytanie - po co ?? STDIN jak nazwa mowi to standardowe WEJSCIE. tam na prawde nie nalezy nic wstawiac recznie. jak chcesz sobie strumieniowo operowac wewnatrz prorgamu - stworz sobie wlasny iostream, w jednym miejscu kodu do niego wstawiaj jak do cout, z innego miejsca czytaj jak z cin, "i juz".

0

*iostream tzn. stringstream

0
xxxxxxx napisał(a)

Przeciez stdin jest w linuksie traktowane jako zwykly plik z ktorego powinno byc moc czytac oraz pisac.
Nie plik tylko strumień. Pliki też są strumieniami. Strumień może być (w skrócie) in, out lub io. stdin to strumień in, wejściowy, z którego się czyta. Wiedz, że nie możesz funkcją ungetc wsadzać znaków w nieskończoność. W ogóle troche niebezpiecznie tego używać, bo ta funkcja została zaprojektowana tak, aby można było cofać znaki wcześniej wyciągnięte. Lepiej zrezygnować z tego co chcesz zrobić i użyć jakiejś alternatywnej konstrukcji.

0

W sumie ja tego nie potrzebuje tylko moj kolega a po co to nawet sie go nie pytalem. Poruszylem ten temat poniewaz zaciekawil mnie. Dzieki wszystkim za pomoc :).

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