Salve a tutti, ho questo problema:
un file di testo txt è così formattato. nella prima riga c'è il numero di parole contenute (una per riga) all'interno di questo file.
esempio:il numero di parole non è dato a priori (quindi va usata l'allocazione dinamica) ma sono massimo di 20 caratteri ognuna. Io voglio acquisirle chiamando una funzione apposita che mi vada a scandire questo file e memorizzare il contenuto in un puntatore che gli passo dal main (vedi codice sotto).codice:4 parola1 parola2 parola3 parola4
il problema arriva ora: io nella funzione eseguo la malloc ma quando ritorno al main il vettore dinamico penso che venga deallocato perchè se faccio un ciclo di printf nel main non ottengo i valori che avrei dovuto acquisire.
come posso usare la malloc in maniera tale da "vedere" i valori acquisiti all'interno della funzione anche nel main (e di conseguenza in qualsiasi altra funzione)?
QUI IL CODICE:
Grazie!codice:#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct qualsiasi {char parola[20]; } ind; int dizionario(ind *indice); int main() { ind *indice; int i,num; num=dizionario(indice); return (EXIT_SUCCESS); } int dizionario(ind *indice) { FILE* diz; int num,i; diz=fopen("/home/paolo/Documenti/Paolo/Docs/Algoritmi/NetBeans/lab04_es01/dizionario.txt","r"); fscanf(diz,"%d",&num); indice=malloc(num*sizeof(ind)); for(i=0;i<num;i++) { fscanf(diz,"%s",indice[i].parola); } fclose(diz); return num; }

Rispondi quotando
