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:
codice:
4
parola1
parola2
parola3
parola4
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).
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:
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; }
Grazie!