nel mio in italiano non c'è..lo devo cambiare! visto che siamo in tema, mi puoi consigliare un buon libro (se proprio non c'è in italiano va bene anche inglese) di C fatto bene però
cmq credo di essere arrivato a buon punto, ho fatto in modo di dividere le parole da un testo qualunque, togliendo eventuali punteggiature dopo la parola (virgole, punti) ed ogni parola va nell'array di puntatori. tutto funziona bene, ma dopo 6 parole esce con un errore. no sò perchè, ma anche cambiando le parole dopo 6 parole lette da errore.!!!!
ti posto il codice, se potreseti dargli un'occhiata quando vuoi cosi mi aiuti a capire cosa c'è che nn va...grazie
Codice:
//elimina tutta la punteggiatura! e restituisce la lunghezza della parola
int elimina_schifezze(char temp[])
{
int i =0;
while(temp[i]>48)
i++;
temp[i] = '\0';
return i;
}
//divide in parole il testo
void dividi_in_parole(FILE *fp, char *a[] ){
char temp[30];
int lunghezza, indice;
indice = -1;
while (fscanf (fp, "%30s", temp) == 1){
indice++; //conta le parole
lunghezza = elimina_schifezze(temp); //lunghezza effettiva della parola
a[indice] = calloc(lunghezza+1,sizeof(char));
strcpy(a[indice], temp);
printf("%s\n", a[indice]);//controllo che parole ha inserito e come le ha inserite
}
}
int main(int argc, char *argv[])
{
FILE *fp;
char *array_parole[500];
int lunghezza;
//apro il file
fp = fopen("/home/peppe/Desktop/file2.txt", "r");
//divido in parole il testo
dividi_in_parole(fp, *array_parole);
//chiudo il file
fclose(fp);
return EXIT_SUCCESS;
}