Δημοσιεύτηκε: 30 Αύγ 2011, 14:08
Δες κι αυτό εδώ:
Αν το n ισούται με το μέγιστο μήκος του destination (π.χ. char destination[4] = ""; int n = 4; ) τότε μέσα στο loop μηδενίζεις μέχρι το destination[3] που είναι ο 4ος και τελευταίος χαρακτήρας του destination κι αμέσως μετά το loop που το i ισούται με 4 (για αυτό σταμάτησε το loop) πας και μηδενίζεις με εκείνο το [i+1] και τον destination[4+1] χαρακτήρα... δηλαδή τον destination[5]... αλλά ο τελευταίος χαρακτήρας που μπορεί να περιέχει το μέγιστο μήκος του destination σύμφωνα με τον ορισμό του είναι ο destination[3]... άρα πας και μηδενίζεις το 2ο byte μετά το τέλος του destination στη μνήμη.
- Κώδικας: Επιλογή όλων
}else {
for(;i < n;i++) {
destination[i] = 0;
}
destination[i+1] = '\0';
return destination;
}
Αν το n ισούται με το μέγιστο μήκος του destination (π.χ. char destination[4] = ""; int n = 4; ) τότε μέσα στο loop μηδενίζεις μέχρι το destination[3] που είναι ο 4ος και τελευταίος χαρακτήρας του destination κι αμέσως μετά το loop που το i ισούται με 4 (για αυτό σταμάτησε το loop) πας και μηδενίζεις με εκείνο το [i+1] και τον destination[4+1] χαρακτήρα... δηλαδή τον destination[5]... αλλά ο τελευταίος χαρακτήρας που μπορεί να περιέχει το μέγιστο μήκος του destination σύμφωνα με τον ορισμό του είναι ο destination[3]... άρα πας και μηδενίζεις το 2ο byte μετά το τέλος του destination στη μνήμη.