ΓΛΩΣΣΑ C
Χρησιμοποιήσα την strncpy για να αντιγράψω ένα αλφαριθμητικό σε έναν δισδιάστατο πίνακα και βγάζει warning:"passing arguement 1 οφ 'strncpy' from incompatible pointer type" και note:"expected 'char*' but arguement type is 'char(*)[(sizetype)(SIZE)]'
Επίσης μετά την εκτύπωση του αλφαριθμητικού crashaρει.
Εμφάνιση 1-8 από 8
-
09-12-18, 12:04 Αντιγραφή αλφαριθμητικού σε δισδιάστατο #1
-
09-12-18, 14:55 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #2
Στη C δεν μπορείς να φτιάξεις ένα πίνακα με μέγεθος που δεν είναι γνωστό κατά τη μεταγλώττιση χωρίς να δεσμεύσεις μόνος σου μνήμη.
Τα ακόλουθα κομμάτια είναι εντελώς διαφορετικά μεταξύ τους:
Κώδικας:int SIZE; SIZE = 5; char array[SIZE];
Κώδικας:#define SIZE 5; char array[SIZE];
Για na φτιάξεις πίνακες που δεν γνωρίζεις το μέγεθος κατά τη μεταγλώττιση πρέπει να χρησιμοποιήσεις τη malloc και να δεσμεύσεις δυναμικά τη μνήμη που θέλεις για τον πίνακά σου.
Γενικά δες για τους pointers και τη malloc-free
-
09-12-18, 15:19 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #3
την SIZE και την N πρέπει να τις δίνει ο χρήστης υποχρεωτικά σύμφωνα με τις οδηγίες που έχω,άρα δεν μπορώ μόνος μου να τους εκχωρήσω τιμές
-
09-12-18, 16:14 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #4
Για αυτό σου είπα για τη malloc και τους pointers...
-
09-12-18, 19:16 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #5
αδερφέ σου έστειλα προσωπικό μύνημα
-
09-12-18, 23:35 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #6
Εάν χρησιμοποιείς C99 τότε μπορείς να έχεις VLAs, δεν χρειάζεται να δημιουργείς τους πίνακες με malloc. Δεν μας λες ποιον compiler χρησιμοποιείς και αν κάνεις μεταγλώττιση σύμφωνα με το C99 standard, αλλά αν ισχύει αυτό τότε μια χαρά είναι οι δηλώσεις των πινάκων έτσι όπως τις έχεις.
Το πρόβλημα είναι στηνΚώδικας:strncpy(pin, str, SIZE);
Μετά από αυτά που σου είπα, δοκίμασε να ξαναγράψεις τον κώδικά σου πιο σωστά και πες μας πώς πάει.
-
10-12-18, 11:52 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #7
Ακόμα καλύτερα η calloc αντί της malloc, η οποία επιπλέον μηδενίζει (καθαρίζει) την μνήμη πριν στην δώσει.
Επιτέλους το ελάχιστο δυνατό, ευέλικτο, και ψηφιακό κράτος. Με διαρκή αξιολόγηση.
-
14-12-18, 16:58 Απάντηση: Αντιγραφή αλφαριθμητικού σε δισδιάστατο #8
Θα σου έλεγα να ρίξεις μια ματιά εδώ: https://www.youtube.com/channel/UC_N...LEY490wrUyXbKg
Σίγουρα σε ενδιαφέρει το 8,10,12 μάθημα.
Όσον αφορά το αλφαριθμητικό, πάντα θα πρέπει να δεσμεύεις μια θέση παραπάνω από το πλήθος των χαρακτήρων που θέλεις να αποθηκεύσεις, αφού ως γνωστό στην c μια συμβολοσειρά πάντα έχει και στο τέλος και τον χαρακτήρα τερματισμού \0Τα όνειρα που κάνω από τα 20 παρκάρουν στον ακάλυπτο νωρίς. Μα εσύ που με κοιτάς σαν λύτρωση ζωή παρκαρισμένη μην δεχτείς.
Παρόμοια Θέματα
-
αντιγραφή πολλών workbooks σε ένα
Από xaris2335 στο φόρουμ Software γενικάΜηνύματα: 2Τελευταίο Μήνυμα: 22-10-18, 08:53 -
Πλήρη αντιγραφή του C: με το λειτουργικό σε άλλον δίσκο, Πως?
Από nkoumo στο φόρουμ Software γενικάΜηνύματα: 1Τελευταίο Μήνυμα: 14-09-18, 20:31 -
462 εκατομμύρια ευρώ από την Samsung στην Apple για "αντιγραφή" του σχεδίου των iPhone
Από nnn στο φόρουμ ΕιδήσειςΜηνύματα: 16Τελευταίο Μήνυμα: 29-05-18, 18:07 -
Rural Broadband: Ολοκληρώθηκε το έργο σε βόρεια και νότια Ελλάδα από τον ΟΤΕ
Από nnn στο φόρουμ ΕιδήσειςΜηνύματα: 140Τελευταίο Μήνυμα: 21-12-17, 16:53
Bookmarks