Προβλημα δηλωσης στη c

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
tasosatha
Δημοσιεύσεις: 37
Εγγραφή: 27 Δεκ 2010 17:16

Προβλημα δηλωσης στη c

Δημοσίευση από tasosatha » 01 Μάιος 2012 13:25

Γεια σας εχω ενα προβλημα σχετικα με την δηλωση ενος πινακα χαρακτηρων στην c.
Αρχικα ειχα να δηλωσω ενα πίνακα τυπου float **aep και να δεσμευσω δυναμικα μνημη γι' αυτον τον πινακα, το οποιο το εκανα με τον εξης τροπο:
aep=(float **)malloc(600*sizeof(float));
Μετα ομως μου ζητάει εναν πινακα char **co που να περιεχει ονοματα. πως θα δεσμευσω γι' αυτον μνημη? Βασικα χρειαζομαι μνημη για 5 ονοματα [0-4].

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

Προβλημα δηλωσης στη c

Δημοσίευση από mariosal » 01 Μάιος 2012 15:27

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>

int main&#40;&#41; &#123;
    const char ROWS = 10;
    const char COLS = 7;
    char i, **name;

    // Allocating name&#91; ROWS &#93;&#91; COLS &#93;
    name = &#40; char** &#41;malloc&#40; ROWS * sizeof&#40; char* &#41; &#41;;
    for &#40; i = 0; i < ROWS; ++i &#41; &#123;
        name&#91; i &#93; = &#40; char* &#41;malloc&#40; COLS * sizeof&#40; char &#41; &#41;;
    &#125;

    // Filling the array
    for &#40; i = 0; i < ROWS; ++i &#41; &#123;
        name&#91; i &#93; = "Hello!";
    &#125;

    // Printing the values
    for &#40; i = 0; i < ROWS; ++i &#41; &#123;
        printf&#40; "%s\n", name&#91; i &#93; &#41;;
    &#125;

    return 0;
&#125;
Το πλήθος των ονομάτων καθορίζεται από την ROWS, ενώ το μήκος κάθε ονόματος από την COLS. Μη ξεχνάς να προσθέτεις +1 στην COLS, λόγω του null character( '\0' ).

Γενικότερα το 2d allocation γίνεται έτσι:

Κώδικας: Επιλογή όλων

TYPE** a;

// Allocating a&#91; ROWS &#93;&#91; COLS &#93;
a = &#40; TYPE** &#41;malloc&#40; ROWS * sizeof&#40; TYPE* &#41; &#41;;                             
for &#40; i = 0; i < ROWS; ++i &#41; &#123; 
    a&#91; i &#93; = &#40; TYPE* &#41;malloc&#40; COLS * sizeof&#40; TYPE &#41; &#41;;
&#125;
Όπου TYPE διάλεξε μεταξύ char, int, float, κτλ.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες