View Single Post
Old 07-10-2007, 11:59   #14
welfi
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 9
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;
}

Ultima modifica di welfi : 07-10-2007 alle 12:03.
welfi è offline   Rispondi citando il messaggio o parte di esso