Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aggiungere parole a una stringa
Forum - C/C++ - Aggiungere parole a una stringa

Avatar
Tusken (Normal User)
Newbie


Messaggi: 1
Iscritto: 23/06/2012

Segnala al moderatore
Postato alle 18:02
Sabato, 23/06/2012
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 sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<string.h>
  4. int main(){
  5.     char s, word[100], *a1=malloc(sizeof(char)), *a2=malloc(sizeof(char));
  6.     int i=0;
  7.     FILE *fp;
  8.     if((fp=fopen("file.txt", "r"))==NULL){
  9.         printf("Il file non risulta accessibile");
  10.         return 0;
  11.     }
  12.     else{
  13.         s=fgetc(fp);
  14.         while(!feof(fp)){
  15.             i++;
  16.             if(isalpha(s) || s==' '){
  17.                 a2=a1;
  18.                 a2=realloc(a1, sizeof(char)*(i+1));
  19.                 strcat(a2, s);
  20.             }
  21.             s=fgetc(fp);
  22.         }
  23.         printf("%s", a2);
  24.         fclose(fp);
  25.         getch();
  26.     }
  27. }


PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 18:25
Domenica, 24/06/2012
Potresti mettere un esempio del contenuto del  file e l'output che dovrebbe dare il programma?

Ultima modifica effettuata da dmr il 25/06/2012 alle 10:58
PM Quote