Salve a tutti, sono nuovo da queste parti. Devo creare un programma per un lavoro di concordanza su un testo. Per la distinzione delle parole ho scelto di registrarle "carattere per carattere" in un array bidimensionale, dato che le funzioni che leggono automaticamente le stringhe si basano sugli spazi e i return per definire l'inizio e la fine di una parola, e per il mio lavoro è un procedimento troppo primitivo. Ho cominciato a fare un programma, ma riesco solo a registrare la PRIMA parola di un testo nell'array, in poche parole non sono riuscito a creare un ciclo che prosegue il lavoro per tutte le parole. Se poteste dirmi dove sbaglio mi fareste un grande favore. Grazie.
codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h> /*ispunct()*/
main()
{
FILE *fp;
char ch, parole[1000][20]; /*parole[i][j]*/
int i, j;
fp=fopen("1","r");
ch = fgetc(fp);
if(fp==NULL)
{
printf("Non rieso ad aprire il file\n");
exit(1);
}
for(i=0; (i < 10) && (feof(fp) == 0); i++) /* Il seguente passaggio identifica una parola all'interno del testo ** passando carattere per carattere e la aggiunge ad un elemento dell'array */
for(j=0; (j < 20) && (feof(fp) == 0); j++) /*Leggere carattere per carattere*/
{
if(ispunct(ch) || isspace(ch)) /*Ferma il ciclo se il carattere è uno spazio o un punto*/
break;
parole[i][j] = ch;
ch = fgetc(fp);
}
parole[i][j] = '\0'; /*Terminatore della parola, senza fa casini (riserva sempre spazio fino al 20)*/
}