allochi una sola "cosa" ma poi pretendi averne cinque.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++) ...
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
usando 5 e 5 cablato nel codice, non riesci più a distinguere le righe dalle colonne;codice:#define NUM_ROW 2 #define NUM_COL 3- 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]);