Oppure

Loading
11/01/09 20:58
bip
io ho usato questo codice:
#include<stdio.h>
#include<iostream>
#include<string.h>

using namespace std;
main(){
char str[1000000];
int i=0;
FILE *p;

if((p=fopen("myfile.txt","r";))==NULL){
cout<<"errore\n";
}
else
{
while (feof(p)==0)
{
fread(&str[i],sizeof(p),1,p);
i++;
}

str[--i]='io ho usato questo codice:
#include<stdio.h>
#include<iostream>
#include<string.h>

using namespace std;
main(){
char str[1000000];
int i=0;
FILE *p;

if((p=fopen("myfile.txt","r";))==NULL){
cout<<"errore\n";
}
else
{
while (feof(p)==0)
{
fread(&str[i],sizeof(p),1,p);
i++;
}

str[--i]='{parsed_message}';
cout<<str<<endl;

fclose(p);
}

system("pause";);
}

ma mi legge solo una piccola parte come mai esiste una sintassi migliore che mi garantsca di stamparmi a video tutto il contenuto del file (usand la funzione fread)?
P.s. il file è di 3k di dimensione
:ot::alert::ot:';
cout<<str<<endl;

fclose(p);
}

system("pause";);
}

ma mi legge solo una piccola parte come mai esiste una sintassi migliore che mi garantsca di stamparmi a video tutto il contenuto del file (usand la funzione fread)?
P.s. il file è di 3k di dimensione
:ot::alert::ot:
Ultima modifica effettuata da bip 11/01/09 21:01
aaa
12/01/09 9:23
gioser
Postato originariamente da bip:
        while (feof(p)==0)
        {
            fread(&str[i],sizeof(p),1,p);
            i++;
        }


così non funziona.
sizeof(p) restituisce la dimensione del puntatore a FILE.

per farlo funzionare devi mettere 1 al posto di sizeof(p), così leggi un byte alla volta. Inoltre non fai nessun controllo di non superare la dimensione del buffer.

in alternativa puoi togliere la while e leggere il buffer in un colpo solo:
size_t nread = fread(str,sizeof(char),sizeof(str)/sizeof(char),p);


e poi controllare il valore nread.




Ultima modifica effettuata da gioser 12/01/09 9:24
aaa