Δημοσιεύτηκε: 25 Φεβ 2012, 15:29
Πάντως όταν θέλεις να διαβάζεις ξεχωριστά ψηφία, μια εναλλακτική πρόταση του "%1d" που τα διαβάζει σαν μονοψήφιους ακέραιους, είναι να τα διαβάζεις ως χαρακτήρες, με "%c".
Π.χ...
Η βασική διαφορά είναι πως σου γλιτώνει μνήμη... ο κάθε χαρακτήρας καταλαμβάνει 1 byte μνήμης, ενώ ο κάθε ακέραιος καταλαμβάνει τουλάχιστον 2 bytes μνήμης (συνήθως 4... εκτός από τον τύπο char, για τους υπόλοιπους το στάνταρ καθορίζει ελάχιστες χωρητικότητες, το αφήνει δηλαδή ανοιχτό να καταλαμβάνουν περισσότερα bytes από ότι ορίζει το στάνταρ).
Π.χ...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
...
char d1, d2, d3; /* three digits, as characters */
printf('Enter a 3-digit integer: ");
mySCANF( "%c%c%c", &d1, &d2, &d3 );
printf( "%c%c%c\n", d1, d2, d3 );
...
Η βασική διαφορά είναι πως σου γλιτώνει μνήμη... ο κάθε χαρακτήρας καταλαμβάνει 1 byte μνήμης, ενώ ο κάθε ακέραιος καταλαμβάνει τουλάχιστον 2 bytes μνήμης (συνήθως 4... εκτός από τον τύπο char, για τους υπόλοιπους το στάνταρ καθορίζει ελάχιστες χωρητικότητες, το αφήνει δηλαδή ανοιχτό να καταλαμβάνουν περισσότερα bytes από ότι ορίζει το στάνταρ).