delfini69 Δημοσ. 29 Νοεμβρίου 2008 Δημοσ. 29 Νοεμβρίου 2008 Καλησπέρα, Θέλω να δημιουργήσω μια 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"; Είναι κάποιο από τα παραπάνω σωστό;;;;;;;; Αν όχι μπορεί κάποιος να με βοηθήσει;;; Ευχαριστώ εκ των πρωτέρων..
npapak Δημοσ. 29 Νοεμβρίου 2008 Δημοσ. 29 Νοεμβρίου 2008 > 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'; Αυτο λογικα πρεπει να δουλευει.
bokarinho Δημοσ. 29 Νοεμβρίου 2008 Δημοσ. 29 Νοεμβρίου 2008 > 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)
PCharon Δημοσ. 29 Νοεμβρίου 2008 Δημοσ. 29 Νοεμβρίου 2008 @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
delfini69 Δημοσ. 29 Νοεμβρίου 2008 Μέλος Δημοσ. 29 Νοεμβρίου 2008 Ευχαριστώ πολύ! Κάτι ακόμα, θέλω να δηλώσω την struct global, γιατί θέλω να βλεπουν τις μεταβλητες του struct οι συναρτήσεις των threads έτσι ώστε να μην χρειάστει να παιρνάω το struct μέσω της pthread_create. Tότε η αναφορά στην μνήμη γίνεται με τον ίδιο τρόπο στις συναρτήσεις; και την μνήμη, για το struct, την κάνω allocate μέσα στην main ή έξω από αυτήν κάτω από τη δήλωση του struct... Ευχαριστώ και πάλι...
PCharon Δημοσ. 29 Νοεμβρίου 2008 Δημοσ. 29 Νοεμβρίου 2008 Τα ορίσματα εκτός, το allocation εντός όπου θέλεις εσύ (σε thread, στη main, αλλού...). Φυσικά πάντα να προσέχεις μην κάνεις διπλό allocation (πρώτα απελευθερώνεις με free(addr); και μετά κάνεις νέο malloc) και διάφορα άλλα... Υ.Γ. Σπουδαστής, έτσι?
delfini69 Δημοσ. 29 Νοεμβρίου 2008 Μέλος Δημοσ. 29 Νοεμβρίου 2008 Ναι σωστά μάντεψες, φοιτητής είμαι! Ευχαριστώ πολυ για την βοήθεια!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.