Errore nel codice

di il
1 risposte

Errore nel codice

Salve, qualcuno sa dirmi cosa non va in questo codice? non riesco a capirlo ma da quando ho inserito il codice nelle funzioni va in segmentation fault...ho allegato la traccia

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 100
//creo struct
struct mystruct{
char fraseletta[NMAX];
int num_parole;
int lung_parole[NMAX];
};
typedef struct mystruct Mystruct;
void stampastruct(Mystruct *v,int indice_struct);
int trovafrase(char *line,Mystruct *v,int indice_struct);
int cerca_parole(char *frase,int lung[NMAX]);
int main()
{
//dichiarazione variabili
char line[NMAX];
char *temp;
Mystruct v[NMAX];
int index=0; //indice struct
//apro file
FILE *fp;
int numero_parole=0;
fp=fopen("input.txt","r");
if(fp!=NULL){
do{
//leggo il testo
temp=fgets(line,NMAX,fp);
if(temp==line){
puts(line);
index=trovafrase(line,v,index);
}
}
while(temp==line);
fclose(fp);
}
stampastruct(v,index);
return 0;
}
int trovafrase(char *line,Mystruct *v,int indice_struct){ //int perchè ritorna l'index della struct
int k=0;int i=0;
int numero_parole=0;
char frase[NMAX];
int lung[NMAX];
while(line!='\n' && line!='\0'){
frase[k]=line;
if(line!=' ' && (line[i+1]=='.' || line[i+1]=='?' || line[i+1]=='!' )) //se incontro un carattere e poi un . ? ! allora è finita la frase
{
frase[k+1]='\0';
//trovo le parole all'interno della frase
numero_parole=cerca_parole(frase,lung);

for(int j=0;j<numero_parole;j++)
{
v[indice_struct].lung_parole[j]=lung[j];
}
// a=0;
k=0;
v[indice_struct].num_parole=numero_parole;
printf("numero parole: %d",numero_parole);
numero_parole=0;
strcpy(v[indice_struct].fraseletta,frase);
printf("FRASE LETTAAAA");
puts(frase);
indice_struct=indice_struct+1;
printf("index(fine frase e numero di frasi lette(: %d \n",indice_struct);
}
k++;
i++;
}
return indice_struct;
}

int cerca_parole(char *frase,int lung[NMAX]){ //ritorna il numero di parole
int numero_parole=0;
int i=0;
int a=0;
int k=0;
while(frase!='\0'){
if(frase==' ' || frase=='\n') //se incontro uno spazio
{
if(numero_parole>0){
a=a+lung[numero_parole-1];
}
lung[numero_parole]=k-a;
printf("lunghezza parola: (k-a) %d \n",(k-a));
numero_parole++; //----incremento il numero di parole
}
}
return numero_parole; //il numero di parole trovato nella frase
}




void stampastruct(Mystruct *v,int indice_struct)
{
printf("indice struct nel void %d", indice_struct);
printf("\n ----- ARRAY DI STRUTTURE -----\n");
for(int i=0;i<indice_struct;i++)
{
puts(v[indice_struct].fraseletta);
printf("%d,",v[indice_struct].num_parole);
for(int j=0;j<v[indice_struct].num_parole;j++)
{
printf("%d",v[indice_struct].lung_parole[j]);
}
printf("\n");
}
}

Allegati:
30739_850478316a35a613ea3f52334fa6cb08.png
30739_850478316a35a613ea3f52334fa6cb08.png

1 Risposte

  • Re: Errore nel codice

    Usa i tag code per il codice o non si capisce nulla
Devi accedere o registrarti per scrivere nel forum
1 risposte