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!
codice:
#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();
}
}