c++: long to const char*

Pantelis Koukousoulas pktoss at gmail.com
Thu Sep 27 16:42:50 EEST 2012


2012/9/27 Theodore Lytras <thlytras at gmail.com>:
> Αυτό βέβαια που αναρρωτιέμαι, είναι τι γίνεται με το \0 που τερματίζει τον
> πίνακα char*. Αν από τα 4 (ή 8) bytes του long χρησιμοποιήσω τα 3 (ή 7), τότε
> προφανώς δεν υπάρχει πρόβλημα. Αν όμως δώσω ένα μεγάλο νούμερο, που να
> χρησιμοποιεί όλα τα bytes, δε θα έχω μετά heap corruption??? Βεβαια από την
> άλλη επειδή το const char * το γράφω μετά στο αρχείο και εκεί γνωρίζω πόσα
> bytes πρέπει να γραφτούν, ίσως και να μην υπάρχει πρόβλημα...
>
> Καλά τα έχω καταλάβει, ή βλακείες λέω??

Μάλλον όχι το πρώτο ;)

δεν είναι κάθε char * το ίδιο πράγμα με ένα C string.

Το \0 στο τέλος είναι σύμβαση για τα C strings, δεν εξυπακούεται ότι
όταν κάνεις cast ένα long σε char * ότι μπαίνει και ένα \0 στο τέλος.

Εσύ μπορείς να γράψεις sizeof(long) bytes στο αρχείο και δεν υπάρχει
κάποιο πρόβλημα με αυτό.

Πάντως είμαι σχεδόν σίγουρος ότι το Qt έχει κάποιο τρόπο να γράψεις αυτά
που θέλεις εκεί που θέλεις χωρίς casts.

Χαιρετισμούς,
Παντελής


More information about the Linux-greek-users mailing list