Salut, Conform standardului C, între fread și fwrite trebuie să ai un fseek, iar în teste se respectă condiția asta. (De asemenea între fwrite și fread o să ai fseek sau fflush).
În fseek, dacă ultima operație a fost read invalidezi ce era în buffer. On Sun, 31 Mar 2019 at 10:51, Paul Olaru via so <[email protected]> wrote: > > Între fread și fwrite la fișierele cu + este garantat că se va apela un fseek > sau fflush. Adică dacă nu e niciun fseek sau fflush între ele teoretic ai > avea voie să dai crash. Nu știu ce face glibc în situația asta. > > On Sun, Mar 31, 2019, 10:49 Ionuț Mihalache via so <[email protected]> > wrote: >> >> Salut, >> >> Ce se întâmplă dacă după un fread care lasă niște octeți în buffer se face >> un fwrite care vrea să scrie mai mult de dimensiunea buffer-ului? >> Teoretic ar trebui să se invalideze buffer-ul, deci să se aducă cursorul de >> fișier înapoi cu un număr de octeți egal cu numărul de octeți din buffer. >> Testele verifică și asta? Eu nu invalidez buffer-ul și testele trec, însă >> dacă mai adaug și partea asta este posibil să mai apară un apel de sistem în >> plus pentru repoziționarea cursorului. >> _______________________________________________ >> http://ocw.cs.pub.ro/courses/so/info/lista-discutii > > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
