[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