Oppure

Loading
23/06/12 16:02
Tusken
Ciao a tutti, ho un problema con un programma in C.
Dovrebbe leggere un file di testo e contare quante volte la stessa sequenza di parole viene ripetuta al suo interno.
Avevo pensato di iniziare copiando il testo in una stringa a parte in modo da eliminare tutti i caratteri per cui isalpha restituisce 0, così da avere solo le parole intervallate da uno spazio (con un'apposita condizione).
Tuttavia non riesco ad aggiungere parole all'array, probabilmente faccio confusione con i puntatori (non c'è un limite al numero di parole, quindi la memoria dev'essere allocata dinamicamente).
Compilando il programma mi dà dei warning su strcat e eseguendolo va in crash.
Vorrei chiedere qual è l'errore e, se possibile, qualche indizio su come procedere per il resto del programma (o eventualmente se c'è un metodo migliore per analizzare il testo senza contare i caratteri diversi dalle lettere).
Di seguito posto la parte di codice finora realizzata.
Grazie a tutti dell'aiuto!

#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(){
    char s, word[100], *a1=malloc(sizeof(char)), *a2=malloc(sizeof(char));
    int i=0;
    FILE *fp;
    if((fp=fopen("file.txt", "r"))==NULL){
        printf("Il file non risulta accessibile");
        return 0;
    }
    else{
        s=fgetc(fp);
        while(!feof(fp)){
            i++;
            if(isalpha(s) || s==' '){
                a2=a1;
                a2=realloc(a1, sizeof(char)*(i+1));
                strcat(a2, s);
            }
            s=fgetc(fp);
        }
        printf("%s", a2);
        fclose(fp);
        getch();
    }
}
aaa
24/06/12 16:25
dmr
Potresti mettere un esempio del contenuto del file e l'output che dovrebbe dare il programma?
Ultima modifica effettuata da dmr 25/06/12 8:58
aaa