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

Struct


delfini69

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

Δημοσ.

Καλησπέρα,

Θέλω να δημιουργήσω μια struct με 3 πίνακες χαρακτήρων, οι οποιοι να έχουν 20 θέσεις ο καθένας και κάθε θέση να χωράει το πολύ 250 χαρακτήρες..

 

Έχω γράψει:

struct addr{

char A[250];

char P[250];

char K[250];

}

&addr=malloc(20 * sizeof(stuct addr));

 

Είναι σωστό αφτό;;

Και όταν θέλω να κάνω εκχώρηση σε κάποιο πίνακα γράγω:&addr.A=="ABCDE";

(όπου το i μία απο τις 20 θέσεις)

Είναι σωστό αφτό;;

 

Ή θα έπρεπε να ήταν κάπως έτσι:

typedef struct addr{

char A[250];

char P[250];

char K[250];

}addr;

addr *mem;

mem=malloc(20 * sizeof(stuct addr));

 

και να κάνω αναφορά:

mem.A=="ABCDE";

 

 

Είναι κάποιο από τα παραπάνω σωστό;;;;;;;;

Αν όχι μπορεί κάποιος να με βοηθήσει;;;

Ευχαριστώ εκ των πρωτέρων..

Δημοσ.

>
struct addr {
 char A[250];
 char P[250];
 char K[250];
};

mem=(struct addr*)malloc(20*sizeof(struct addr));

 

και για να γραψεις

 

>

for(i=0;i<20;i++)
   mem[i].A='AAAFRE';

 

Αυτο λογικα πρεπει να δουλευει.

Δημοσ.
>
struct addr {
 char A[250];
 char P[250];
 char K[250];
};

mem=(struct addr*)malloc(20*sizeof(struct addr));

 

και για να γραψεις

 

>

for(i=0;i<20;i++)
   [b][i]mem[i].A='AAAFRE';[/i][/b]

 

Αυτο λογικα πρεπει να δουλευει.

 

Δεν νομίζω....

(strncpy)

Δημοσ.

@delfini69

Για τον ορισμό της δομής που θες:

>[color="Blue"]typedef struct[/color] {
[color="Blue"]char[/color] A[250];
[color="#0000ff"]char[/color] P[250];
[color="#0000ff"]char[/color] K[250];
} ADDR;
ADDR *addr = NULL;
addr = malloc(20 * [color="Blue"]sizeof[/color](ADDR));
[color="Blue"]if[/color](addr == NULL) { [color="SeaGreen"]/* PROBLEM: memory allocation failed! */[/color] }

Για να "γράψεις" κάπου:

>
[color="#0000ff"]if[/color](i < 20) strcpy(addr[i].A, "ABCDE");

 

Υ.Γ. ξαναδιάβασε λίγο σύνταξη για τη C

Δημοσ.

Ευχαριστώ πολύ! Κάτι ακόμα, θέλω να δηλώσω την struct global, γιατί θέλω να βλεπουν τις μεταβλητες του struct οι συναρτήσεις των threads έτσι ώστε να μην χρειάστει να παιρνάω το struct μέσω της pthread_create. Tότε η αναφορά στην μνήμη γίνεται με τον ίδιο τρόπο στις συναρτήσεις; και την μνήμη, για το struct, την κάνω allocate μέσα στην main ή έξω από αυτήν κάτω από τη δήλωση του struct...

 

Ευχαριστώ και πάλι...

Δημοσ.

Τα ορίσματα εκτός, το allocation εντός όπου θέλεις εσύ (σε thread, στη main, αλλού...). Φυσικά πάντα να προσέχεις μην κάνεις διπλό allocation (πρώτα απελευθερώνεις με free(addr); και μετά κάνεις νέο malloc) και διάφορα άλλα...

 

Υ.Γ. Σπουδαστής, έτσι?

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

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

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