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;
}