Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: fread()  (Citit de 2279 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« : Februarie 07, 2010, 12:49:27 »

Daca citesc dintr-un fisier numerele urmatoare:
Cod:
2
4
32 81 100 18
(fara newline in fisier) folosind fread(a,1,DIM,stdin), vectorul a va arata asa:
Cod:
+		a	0x0041a4f0 "2
4
32 81 100 1818" char [8192]
(am dat copy paste din watch-ul din vc++)
Problema e ca-mi baga inca un 18 la sfarsitul vectorului daca nu am endline la sfarsitul fisierului.De ce oare?(si in mingw face la fel)
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Februarie 07, 2010, 13:42:16 »

Daca valoarea lui DIM est corecta n-ar trebui. Poti posta bucata de cod Smile
Memorat
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #2 : Februarie 07, 2010, 13:49:22 »

Cod:
....
const int DIM=8192;
char a[DIM];
int poz=DIM-1;
...
inline void read(int &x)
{
x=0;
while(a[poz]<'0'||'9'<a[poz])
if(++poz==DIM)
fread(a,1,DIM,stdin),poz=0;
while('0'<=a[poz]&&a[poz]<='9')
{
x=x*10+a[poz]-'0';
if(++poz==DIM)
fread(a,1,DIM,stdin),poz=0;
}
}
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #3 : Februarie 07, 2010, 13:59:25 »

Interesant, la mine merge perfect ( compilat sub ubuntu ).
Oricum daca dai entrer dupa ultima linie din fisier ar veni linia vida.  Pe scurt in reprezentarea memoriei ar veni ceva de genu
Cod:
....\n\0
La siruri de caractere \0 reprezinta sfarsitul sirului si astfel indiferent ca ti-l dubleaza e inutil Smile
Memorat
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #4 : Februarie 07, 2010, 14:10:45 »

Am scapat de problema, citind primele 2 numere normal si facand parsare doar pentru a 3-a linie.Poate ca in windows se comporta diferit sau calculatoru meu are ceva Smile)
Asta imi arata mie daca este endline la sfarsitul fisierului
Cod:
+		a	0x0041a4f0 "2
4
32 81 100 18
8
" char [4096]
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #5 : Februarie 07, 2010, 14:12:36 »

Am scapat de problema, citind primele 2 numere normal si facand parsare doar pentru a 3-a linie.Poate ca in windows se comporta diferit sau calculatoru meu are ceva Smile)
Nu chiar, cred ca la mine editorul, dupa ultima linie scrisa trece automat la atla dupa salvare, deci scap de aceasta problema  Whistle
Memorat
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #6 : Februarie 07, 2010, 14:15:12 »

Nu inteleg ce vrei sa zici ...
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #7 : Februarie 07, 2010, 21:33:36 »

Eu totusi nu inteleg de ce nu citesti tot fisierul si gata, n-ar fi mai simplu ?
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines