Δημοσιεύτηκε: 03 Μαρ 2012, 17:26
Ilias95 έγραψε:Όμορφα.
Το:
- Κώδικας: Επιλογή όλων
if ( msg[i] == '\n' )
msg[i--] = '\0';
Νομίζω πρέπει να γίνει:
- Κώδικας: Επιλογή όλων
if ( msg[i] == '\n' )
msg[i] = '\0';
Γιατί χάνεται ένας χαρακτήρας στην έξοδο.
Σωστός, το διόρθωσα (καταραμένο copy & paste
έγραψε:migf1 έγραψε:παρατήρησε επίσης πως αρχικοποιώ το msg[] με όλο το μήκος τους γεμάτο μηδενικούς χαρακτήρες στην αρχή
Θα ήταν το ίδιο με;
- Κώδικας: Επιλογή όλων
char msg[ MAXINPUT ] = {0};
Γιατί απ' ότι κατάλαβα το '\0' παίζει ρόλο στο να σηματοδοτήσει το "τέλος" του string. Ή υπάρχει λόγος που γίνεται και η αρχικοποίηση έτσι;
Είναι ακριβώς το ίδιο, ναι. Το '\0' ισοδυναμεί με ASCII code = 0 ... το βάζουμε έτσι για να είναι πιο ευδιάκριτο πως πρόκειται για πίνακα χαρακτήρων... έτσι κι αλλιώς εμείς είτε ως 0 είτε ως '\0' αρχικοποιούμε μονάχα το 1ο στοιχείο του πίνακα, τα υπόλοιπα τα μηδενίζει αυτόματα η C (είναι στα χαρακτηριστικά της γλώσσας να μην αρχικοποιεί αυτόματα σε 0 τις μη-καθολικές μεταβλητές, αλλά να αρχικοποιεί αυτόματα με μηδενικά bytes οτιδήποτε περισσεύει από δική μας ελλειπή αρχικοποίηση πινάκων).