Δημοσιεύτηκε: 16 Αύγ 2011, 14:52
Μα σου εξήγησα γιατί θα τρέχει αιώνια σε περίπτωση που ο χρήστης σου πληκτρολογήσει περισσότερους από MAX_SLEN χαρακτήρες στην κύρια είσοδο. Δεν θα υπάρχει '\n' μέσα στο string σε αυτή την περίπτωση (μονάχα '\0' θα υπάρχει).
Δοκίμασέ το και μόνος σου, βάλε το MAX_SLEN ίσο ξέρω γω με 5 και στην κύρια είσοδο πληκτρολόγησέ του 7 χαρακτήρες... θα μπει σε infinite loop αν δεν κάνεις έλεγχο και για '\0'.
EDIT:
Αν θέλεις να μην υπάρχει σίγουρα '\n' έτσι κι αλλιώς, αντί για fgets() διάβαζε το string με την s_get() ή ακόμα καλύτερα με την s_getflushed()... αυτές τις έχω φτιάξει έτσι ώστε εγγυημένα να μην υπάρχει '\n' στο διαβασμένο string!
Δοκίμασέ το και μόνος σου, βάλε το MAX_SLEN ίσο ξέρω γω με 5 και στην κύρια είσοδο πληκτρολόγησέ του 7 χαρακτήρες... θα μπει σε infinite loop αν δεν κάνεις έλεγχο και για '\0'.
EDIT:
Αν θέλεις να μην υπάρχει σίγουρα '\n' έτσι κι αλλιώς, αντί για fgets() διάβαζε το string με την s_get() ή ακόμα καλύτερα με την s_getflushed()... αυτές τις έχω φτιάξει έτσι ώστε εγγυημένα να μην υπάρχει '\n' στο διαβασμένο string!