Compilando questo programma ricevo un bel Segmentation Fault, quando vado a scrivere sulla 3/4 riga della matrice. Ora i miei dubbi sono :codice:void delmanipulate (char *s) { FILE *ptrdel; int i = 0, j = 4, k = 0, x = 0, e = 0, n = 0; char *del,*control; char **mat; n = stringcounter(s); mat = (char **)malloc(n * sizeof(char)); for(x=0;x<n;x++) mat[x] = (char*)malloc(STREAM*sizeof(char)); del = (char*)malloc(STREAM*sizeof(char)); control = (char*)malloc(STREAM*sizeof(char)); ptrdel = fopen("results.txt","r"); if(ptrdel==NULL) { printf("Errore nell'apertura del file\n\n"); exit(0); } while(j<=STREAM) { if(s[j]=='+' || j==STREAM) { del[i]='\0'; break; } del[i]=s[j]; j++; i++; } i=0; while((e=fgetc(ptrdel))!= EOF) { if(((char)e) == '\0') { control[i]='\0'; if((strcmp(control,del)) !=0) { strcpy(mat[k],control); i=0; k++; } if((strcmp(control,del)) == 0) { i=0; } } if(e!=10 && ((char)e!='\0') && ((char)e!='\n')) { control[i]=(char)e; i++; } } fclose(ptrdel); ptrdel = fopen("results.txt","w+"); for(x=0;x<k;x++) { fprintf(ptrdel,"%s",mat[x]); fprintf(ptrdel,"%c",'\0'); fprintf(ptrdel,"%c",'\n'); } fclose(ptrdel); free(mat); }
1 - Ho sbagliato l'utilizzo della malloc?
2- Devo inizializzare la matrice, riempendola con caratteri casuali?
3 -Se al posto della variabile 'n' nella malloc metto un numero grande dell'ordine di 30, il problema non si pone ed il programma viene eseguitoperchè??!!
![]()
P.S. La funzione stringcounter restituisce il numero di stringhe all'interno di un file di testo.

perchè??!!
Rispondi quotando