Δημοσιεύτηκε: 16 Αύγ 2011, 14:46
από Star_Light
migf1 έγραψε:
Ναι, απλά όταν το περιγράφεις με λόγια η συνθήκη σταματάει είτε όταν εκπληρωθεί η 1η σύγκριση είτε η 2η, γιατί αν π.χ. βρει '\n' τότε το *cp != '\n' γίνεται FALSE, οπότε TRUE && FALSE δίνει FALSE, οπότε σταματάει το loop. Ομοίως, αν βρει '\0' γίνεται FALSE το *cp != '\0'.

Οπότε στην πράξη το loop σταματάει όταν βρει '\0' ή όταν βρει '\n'. Τον έλεγχο για το '\0' τον έβαλα για την περίπτωση που ο χρήστης μας πληκτρολογήσει περισσότερους από MAX_SLEN χαρακτήρες, οπότε σε αυτές τις περιπτώσεις η fgets() βάζει το '\0' στον MAX_SLEN-1 χαρακτήρα του s, χωρίς να περιέχεται καθόλου '\n' στο s.

Αν δεν έβαζα αυτόν τον έλεγχο και άφηνα μονάχα τον *cp != '\n' τότε σε περιπτώσεις όπως η παραπάνω το loop θα έτρεχε... αιώνια :lol:

ΥΓ. Τελικά θα φύγω αύριο κι εγώ.


α ναι.

Κοιταξε εγω το εχω αφησει ετσι

Κώδικας: Επιλογή όλων
for(str_ptr=str; *str_ptr!='\n'; str_ptr++)


θεωροντας πως θα σταματησει μολις ο χρηστης δωσει την φραση του και πατησει εντερ γιατι να τρεχει αιωνια δηλαδη???
εκτος και αν ο χρηστης πληκτρολογει αιωνια.... βεβαια καταλαβαινω την λογικη σου στα παραπανω... επομενος στοχος ειναι να παιζω με ολα αυτα
αλλα δημιουργωντας και μια δευτερη συναρτηση στην οποια θα βαζω εκει να υπολογιζει το αντιστροφο της φρασης μας και θα την καλω με αναφορα.