Salve a tutti,su suggerimento di YuYevon:
Il che è molto bello, lascerei la ragazza per questoTi suggerisco come interessante esercizio l'allocazione dinamica della memoria per una matrice tridimensionale gestita come puntatore triplo![]()
![]()
Ho detto,proviamo a farlo.
C'è un segmentation fault, nella stessa riga in cui dichiaro:
Il che dimostra che il flusso di istruzioni va avanti senza considerare che sto tentando di pulire il buffer a modo mio,ma la getchar viene totalmente ignorata.codice:puts(stringmatrix[j][i]);
Questo è il codice integrale,con 0 errori e 0 avvisi usando GCC su code::blocks (linux) ma il segmentation fault:
codice:#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> #include <stdbool.h> #include <string.h> int main(int argc,char **argv) { char ***stringmatrix; int i,j,size,taker; stringmatrix=(char***)calloc(5,sizeof(char**)); if(stringmatrix==NULL) { printf("Errore, scappa !!!\n"); exit(0); } for(j=0;j<5;j++) { stringmatrix[j]=(char**)malloc(sizeof(char*)); if(stringmatrix[j]==NULL) { printf("Errore, scappa !!!\n"); exit(0); } for(i=5;i<5;i++) { taker=getchar(); getchar(); while(taker!=10) ; size=1; taker=0; while(taker!=10) { fseek(stdin,-1,SEEK_CUR); size++; } stringmatrix[j][i]=(char*)calloc(size,sizeof(char)); if(stringmatrix[i][j]==NULL) { printf("Errore, scappa !!!\n"); exit(0); } fgets(stringmatrix[j][i],size,stdin); } } for(j=0;j<5;j++) for(i=0;i<5;i++) puts(stringmatrix[j][i]); return 0; }

Rispondi quotando
