Δημοσιεύτηκε: 04 Ιουν 2011, 12:10
Μια εναλλακτική για το πρόβλημα με το πρόγραμμα θα ήταν να χρησιμοποιηθεί
Προσοχή: αν ο χαρακτήρας εισόδου είναι πάνω από σαράντα εννιά χαρακτήρες τότε υπάρχει πρόβλημα.
Σε 32bit σύστημα sizeof(char)= 1byte και sizeof(int)= 4byte. Η συνάρτηση getc επιστρέφει int, αν αποθηκεύσετε το αποτέλεσμα σε char θα δημιουργηθεί data truncation, το οποίο όσον αφορά στην συγκεκριμένη συνάρτηση δεν πιστεύω να δημιουργήσει πρόβλημα. Προσωπικά, τουλάχιστον, δεν μου έχει δημιουργήσει πρόβλημα μέχρι σήμερα. Αν επιλέξετε να αποθηκεύσετε το αποτέλεσμα σε int, δεν θα υπάρξει απώλεια πληροφορίας είναι πιθανόν όμως το πρόγραμμα να γίνεται πιο αργό αν κατά την διάρκεια του χρησιμοποιείται η αποθηκευμένη τιμή πολλές φορές. Το casting κοστίζει και ειδικά το Implicit.
- Κώδικας: Επιλογή όλων
buffer[50];
memset(buffer,'\0',50);
scanf("%s", buffer);
strcmp(buffer,"y")
Προσοχή: αν ο χαρακτήρας εισόδου είναι πάνω από σαράντα εννιά χαρακτήρες τότε υπάρχει πρόβλημα.
medigeek έγραψε:Ερώτηση: Αν χρησιμοποιήσω
- Κώδικας: Επιλογή όλων
int c, var, var2;
ή
- Κώδικας: Επιλογή όλων
char c, var, var2;
Το αποτέλεσμα είναι το ίδιο. Ποιο είναι το σωστό; Ή είναι τα ίδια;
Σε 32bit σύστημα sizeof(char)= 1byte και sizeof(int)= 4byte. Η συνάρτηση getc επιστρέφει int, αν αποθηκεύσετε το αποτέλεσμα σε char θα δημιουργηθεί data truncation, το οποίο όσον αφορά στην συγκεκριμένη συνάρτηση δεν πιστεύω να δημιουργήσει πρόβλημα. Προσωπικά, τουλάχιστον, δεν μου έχει δημιουργήσει πρόβλημα μέχρι σήμερα. Αν επιλέξετε να αποθηκεύσετε το αποτέλεσμα σε int, δεν θα υπάρξει απώλεια πληροφορίας είναι πιθανόν όμως το πρόγραμμα να γίνεται πιο αργό αν κατά την διάρκεια του χρησιμοποιείται η αποθηκευμένη τιμή πολλές φορές. Το casting κοστίζει και ειδικά το Implicit.