Originariamente inviato da ramy89
codice:
    for(j=0;j<5;j++)
    {
        stringmatrix[j]=(char**)malloc(sizeof(char*));
        for(i=0;i<5;i++)
        {
            stringmatrix[j][i]=input();
        }
    }
    for(j=0;j<5;j++)
        for(i=0;i<5;i++)
...
allochi una sola "cosa" ma poi pretendi averne cinque.

poi:
  • nella malloc incriminata oltre ad allocare una sola cosa quando te ne servono cinque, non controlli il puntatore restituito;
  • nella "input" ti porti in giro un "\n" da fgets in genere inutile;
  • usa le macro
    codice:
    #define NUM_ROW 2
    #define NUM_COL 3
    usando 5 e 5 cablato nel codice, non riesci più a distinguere le righe dalle colonne;
  • nei programmi di test, usa assert anziché if.. abort (0);
  • usa i per le righe e j per le colonne (meglio ancora un qualcosa del tipo: aIterRow, aIterColumn).
  • usa SEMPRE le graffe anche laddove non necessario altrimenti prima o poi commetterai l'errore del tipo:
    codice:
        for(j=0;j<5;j++)
            for(i=0;i<5;i++)
            	Log (i, j);
            	puts (stringmatrix[j][i]);