Προς το περιεχόμενο

δημιουργία δισδιάστατου πίνακα με malloc σε C


Amadeus7

Προτεινόμενες αναρτήσεις

Δημοσ.

Μπορεί κάποιος να μ πεί πώς μπορώ να δημιουργήσω με malloc έναν πίνακα χαρακτήρων της μορφής title[N][31], όπου Ν δίνεται από το χρήστη.

αν στην αρχή ορίσώ *Ν[31] και μετά κάνω malloc για Ν θα μου δημιουργήσει έναν πίνακα N[31][N].

 

σκεύτηκα αυτό

>
int N;
     char *title;
     title=(char*)malloc(N*sizeof(char));
     for(i=0; i<N; i++)
              title[i]=(char*)malloc(31*sizeof(char));

 

ή

 

>
int N;
     char **title;
     title=(char**)malloc(N*sizeof(char*));
     for(i=0; i<N; i++)
              title[i]=(char*)malloc(31*sizeof(char));

 

ποιό είναι σωστό?

Δημοσ.

το δεύτερο (έχεις πίνακα N δεικτων σε δείκτες 31 χαρακτηρων)

 

η μπορείς να κάνεις και αυτό

>
char *p = malloc(N * 31);
char *str(size_t i,size_t y) {
      assert(i<N);
      assert(y<31);
      return p + (i * 31 + y);
}

Δημοσ.

άλλη μία απορία, αυτό είναι σωστό? όσο αναφορά την αποθήκευση στους πίνακες, ή πρώτα να αποθηκεύω τις τιμές σε μεταβλητές και μετά στους πίνακες?

>
for(i=0; i<N_metrhseis; i++)
     {
              printf("Doste plhrofories gia th metrhsh pou thelete\n");
              fgets(eisagogh, 200 ,stdin);
              a=atoi(strtok(eisagogh, separator)-1;
              strcpy(titlos[a],strtok(NULL, separator));
              strcpy(channel[a],strtok(NULL, separator));
              start[a][1]=atoi(strtok(NULL, separator);
              start[a][2]=atoi(strtok(NULL, separator);
              end[a][1]=atoi(strtok(NULL, separator);
              end[a][1]=atoi(strtok(NULL, separator);
              length[a][1]=atoi(strtok(NULL, separator);
              length[a][1]=atoi(strtok(NULL, separator);
              share[a]=atof(strtok(NULL, separator);
     }

Δημοσ.

Υπάρχουν άλλοι τρόποι για δήλωση δισδιάστατου με malloc στη C εκτός από αυτούς που αναφέρθηκαν παραπάνω?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...