bujar Δημοσ. 6 Απριλίου 2010 Δημοσ. 6 Απριλίου 2010 Καλησπερα παιδια και ΧΡΟΝΙΑ ΠΟΛΛΑ ΣΕ ΟΛΟΥΣ. Εχω μια εργασια που αφορα τις βασεις δεδομενων σε c. Μας δινονται συναρτησεις που αφορουν το επιπεδο των block (σε μορφη βιβλιοθηκης) και μεσω αυτων πρεπει να υλοποιησω καποιες συναρτησεις που αφορουν το επιπεδο heap file (συναρτησεις διαχειρισης εγγραφων) δυστυχως τα εχω βρει σκουρα και θα ηθελα αν ξερει κανεις να μου πει πως κινουνται γενικα σε τετοιες περιπτωσεις ή ακομη καλυτερα καποιο λινκ που να μπορεσω να βρω μια ακρη (πληροφοριες συγκεκριμενα για ΣΔΒΔ σε c). το ξερω οτι τα παραπανω ειναι γενικα, αλλα για να καταλαβετε τι πρεπει να κανω θα πρεπει να ποσταρω ολη την εκφωνηση και κατι τετοιο δεν θελω να το κανω. Σιγουρα απο τα παιδια που ασχολουνται με C καποιοι θα εχουν συναντησει κατι παρομοιο και καταλαβαινουν ποια ειναι η φυση της εργασιας, οποτε κυριως απευθυνομαι σε αυτους. εχω ψαξει ηδη στο google και δεν καταφερα να βρω κατι, οτι εβρισκα ειχε να πει μονο γενικα πραγματα που εβαζε και SQL μεσα και αυτα δεν με βοηθησαν καθολου Ευχαριστω εκ των προτερων για την οποια βοηθεια
bujar Δημοσ. 8 Απριλίου 2010 Μέλος Δημοσ. 8 Απριλίου 2010 > #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int id; }Record; int main(){ Record *rc, record ; void* block; rc = malloc (sizeof(Record)); rc->id = 0; memcpy(block, &rc, sizeof(Record)); free(rc); memcpy((void*)&record, block, sizeof(Record)); printf("%d",record.id); getchar(); return 0; } θα μπορουσε καποιος να μου απαντησει γιατι δεν τυπωνει 0 στην printf??? αυτος δεν ειναι ο σωστος τροπος??? ή κανω κατι λαθος??
parsifal Δημοσ. 8 Απριλίου 2010 Δημοσ. 8 Απριλίου 2010 3 λάθη βλέπω: Δεν κάνεις allocate μνήμη για το block. Στην πρώτη κλήση της memcpy, περνάς ως δεύτερο όρισμα τη διεύθυνση του δείκτη rc, αντί τον ίδιο τον δείκτη. Γιατί; Στη δεύτερη κλήση της memcpy, για το πρώτο όρισμα το casting σε void* είναι περιττό.
bujar Δημοσ. 9 Απριλίου 2010 Μέλος Δημοσ. 9 Απριλίου 2010 3 λάθη βλέπω: Δεν κάνεις allocate μνήμη για το block. Στην πρώτη κλήση της memcpy, περνάς ως δεύτερο όρισμα τη διεύθυνση του δείκτη rc, αντί τον ίδιο τον δείκτη. Γιατί; Στη δεύτερη κλήση της memcpy, για το πρώτο όρισμα το casting σε void* είναι περιττό. σε ευχαριστω πολυ φιλε μου, το πρωτο μου διεφυγε τελειως (το σημαντικοτερο, αλλα το εχω καψει), το δευτερο ηταν κεκτημενη ταχυτητα, οσο για το τελευταιο εχεις δικιο, αλλα δεν ειχα καταλαβει πως λειτουργει ο δεικτης σε void. ευχαριστω πολυ για την βοηθεια, να'σαι καλα
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.