PDA

Visualizza la versione completa : [C] Lettura intera stream


ExSoax
06-11-2010, 19:57
Scusate, da poco che ho iniziato a studiare file, puntatori in c, credo con una conoscienza abbastanza sufficente... Tuttavia mi sono inceppato su questa funzione


char *readall(char *flnm){

FILE *stream, *fopen();
stream = fopen(flnm,"r");
if(stream == NULL){
return NULL;
}
int size = sizeoff_s(stream);
if(timem(size) == 0){
return NULL; //no memory
}
char c;
char *tr;
int i = 0;
while((c = getc(stream))!=EOF){
tr[i] = c;
i++;
}
fclose(stream);
return tr;

}


Mi restituisce un Segmentation Fault... Non ho molto chiaro il concetto di array in puntatori magari se me lo potreste spiegare meglio ve ne sarei grato... Grazie, ciao!

ExSoax
06-11-2010, 19:58
P.S. la funzione sizeoff_s questa


int sizeoff_s(FILE *stream){
int size;
fseek(stream, 0, SEEK_END);
size = ftell(stream);
fseek(stream, 0, SEEK_SET);
return size;
}


e timem



int timem(int size){
int *m = malloc(size);
if(m == NULL){
return 0;
}else{
return 1;
}
}

simo_85
06-11-2010, 21:22
Leggi qui (http://forum.html.it/forum/showthread.php?s=&threadid=1430970).

ExSoax
07-11-2010, 11:18
Ok, grazie, ho risolto cosi... avevo dimenticato delle cose U.u


char *readall(char *flnm){

FILE *stream, *fopen();
stream = fopen(flnm,"r");
if(stream == NULL){
return NULL;
}
int size = sizeoff_s(stream);
char *tr = mall(size);
if(tr==NULL){
return NULL;
}

char c;
int i = 0;
while((c = getc(stream))!=EOF){
tr[i] = c;
i++;
}
fclose(stream);
return tr;

}



char *mall(int size){
char *m = (char *)malloc(size);
if(m == NULL){
return m;
}else{
return m;
}
}

Loading