[so] Tema 4 - probleme citire input

Catalin Iacob iacobcatalin at gmail.com
Tue Dec 18 00:19:48 EET 2007


On Tuesday 18 December 2007 00:03:44 Andrei Ciuca wrote:
> Am si eu o problema ... la testele 23,24,25 clientul nu citeste tot inputul
> ... adica ii dau sa citeasca 16834 de octeti de exemplu , si el citeste cam
> cat are el chef (255,1024 mai variaza sa nu ma plictisesc).
>
> A mai avut cineva o problema asemanatoare ?
> (e verificat de 10000 de ori , ii dau sa citeasca cat trebuie si el citeste
> doar foarte putin)

De ce zici ca iti citeste doar 255, 1024?
Daca zici asta fiindca faci un test de genul printf("%s", 
buffer_in_care_am_citit); si vezi ca apar prea putine chestii pe ecran e 
gresit. printf vede %s si zice "ok; afisez un sir deci afisez pana dau de un 
octet 0 - terminatorul de sir". Daca bufferul contine printre date un octet 0 
iti afiseaza mai putin decat ai citit de fapt si ti se pare ca n-a citit tot 
ce trebuie. Ar trebui aflat de la read cat a citit si afisat cu fwrite. Ceva 
de genul: 
size_t numar_octeti_cititi = read(...);
fwrite(stdout, buffer_in_care_am_citit, numar_octeti_cititi);

Intre timp am vazut ca ti-a raspuns Cosmin si se pare ca e vorba de pipe in 
testele respective deci raspunsul lui are sanse mult mai mari sa fie cel care 
iti rezolva problema. Apropo de asta, nici read pe fisier normal nu e 
garantat ca iti citeste cat i-ai dat. Trebuie sa te uiti cat iti spune ca a 
citit si sa-i mai ceri in continuare daca a citit prea putin.

Am trimis totusi mesajul asta pentru ca cineva chiar a avut problema pe care 
am descris-o si ma gandesc ca poate o sa ajute pe altii.

Catalin


More information about the so mailing list