Salve a tutti,su suggerimento di YuYevon:
Ti suggerisco come interessante esercizio l'allocazione dinamica della memoria per una matrice tridimensionale gestita come puntatore triplo
Il che è molto bello, lascerei la ragazza per questo
Ho detto,proviamo a farlo.
C'è un segmentation fault, nella stessa riga in cui dichiaro:
codice:
puts(stringmatrix[j][i]);
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.
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;
}