^LeoNine^ Δημοσ. 25 Απριλίου 2010 Δημοσ. 25 Απριλίου 2010 καλησπέρα διαβάζω ένα βιβλίο για την c(programming in c 2nd edition m.ritchie kernighan) και κόλλησα σε 2 ασκήσεις περί getchar και putchar τα δυο παραπάνω τα κατάλαβα καλα.. αλλά έχω κολλήσει με αυτό το EOF Άσκηση 1.6 επαληθεύστε ότι η παράσταση getchar() !=EOF έχει τιμή 0 η 1 Δεν έχω ιδέα πως να το κάνω κ άσκηση 1.7 Γράψτε ένα πρόγραμμα που να δείχνει την τιμή του EOF #include <stdio.h> main() { int c; c=EOF; while (c==EOF){ putchar©; c=getchar(); } } έγραψα αυτό αλλά μου δείχνει το "?" (όταν το τρέχω) το EOF είναι το αγγλικό ερωτηματικό? (σε άλλο φόρουμ μου είπαν να πατάω cntr+d για το EOF) (το παραπάνω ερώτημα το έχω βάλει σε άλλο φόρουμ αλλά δεν πήρα απάντηση, πιθανόν επειδή είναι λίγα τα άτομα κ αυτοί που ξέρουν αργούν να το δουν)
virxen75 Δημοσ. 25 Απριλίου 2010 Δημοσ. 25 Απριλίου 2010 1.6 =================== > #include <stdio.h> int main(){ printf("\npata ena pliktro:"); printf("\ni ekfrasi getchar() != EOF einai isi me:%d", getchar() != EOF); getchar(); getchar(); return 0; } αν δώσεις EOF θα απαντήσει 0 αν δώσεις οτιδήποτε άλλο θα δώσει 1 EOF---->DOS,windows ---->ctrl+z unix,linux ctrl+d ---------- Προσθήκη στις 22:05 ---------- Προηγούμενο μήνυμα στις 22:03 ---------- 1.7 ========================================== αυτό δεν είναι πιο απλό? > #include <stdio.h> int main(){ printf("i timi tou EOF einai %d", EOF); getchar(); return 0; }
^LeoNine^ Δημοσ. 25 Απριλίου 2010 Μέλος Δημοσ. 25 Απριλίου 2010 χίλια ευχαριστώ για τον χρόνο σου στο 1.7 μου βγάζει -1 αποτέλεσμα, είναι σωστό ?
bxenos Δημοσ. 25 Απριλίου 2010 Δημοσ. 25 Απριλίου 2010 To αν το λειτουργικό σύστημα έχει χαρακτήρα eof ή όχι, δεν έχει σημασία και δεν ασχολείτε με αυτο ούτε το βιβλίο των k&r. Το EOF είναι σταθερά με τιμή -1 που ορίζεται στυο stdio.h και την επιστρέφει η getchar() όταν τελειώσει το αρχείο. Οι συναρτήσεις που ασχολούνται με το αρχείο, όταν δουν το τέλος τους (ειδικός χαρακτηρας τέλους του λειτουργικού συστήματος ή διάβασμα μετά το πραγματικό μέγεθος του αρχείου) επιστρέφουν αυτή την ειδική για αυτή τη δουλειά σταθερά. Αν διαβάζεις απο κονσόλα, και δώσεις ctrl-z/ctrl-d (όπως αναφέρθηκε στα αντιστοιχα λειτουργικα), τότε θα μετατραπεί αυτόματα και θα σου έρθει το -1 (ΕΟF) απο την getchar(). Το ctrl-d/ctrl-z δεν μπορείς να το διαβάσεις (δεν θα φτάσει ποτέ να μπορέσεις να το διαβάσεις απο κονσόλα/δίσκο) αν το αρχείο σου είναι τύπου TEXT. άλλο παράδειγμα: αν διαβάζεις τον εντέκατο χαρακτήρα απο αρχείο 10χαρακτήρων (που δεν ειναι απαραίτητο να έχει ctrl-z/ctrl-d στο τέλος) θα σου έρθει πάλι το -1. Εσύ τυπώνοντας EOF, προσπαθείς να τυπώσεις τον χαρακτήρα -1.
^LeoNine^ Δημοσ. 25 Απριλίου 2010 Μέλος Δημοσ. 25 Απριλίου 2010 τέλεια απάντηση χίλια ευχαριστώ όχι τίποτα άλλο, είμαι τόσο κολλημένο άτομο, που αν δεν καταλάβω κάτι, δεν συνεχίζω είναι δύσκολο να μάθεις μια τέτοια γλώσσα μόνος σου, αλλά έχω πείσμα.. τους επόμενους μήνες θα με δείτε να εξελίσσομε άσχετο παρατήρησα πως οι δύο κώδικες που έγραψε το παιδί παραπάνω αρχίζουν με int main() και τελειώνουν με return 0; σε όλα τα παραδείγματα στο βιβλίο αρχίζει απλά με main() ποιό είναι το σωστό? κ γιατί ?
C6WGMN Δημοσ. 25 Απριλίου 2010 Δημοσ. 25 Απριλίου 2010 τέλεια απάντηση άσχετο παρατήρησα πως οι δύο κώδικες που έγραψε το παιδί παραπάνω αρχίζουν με int main() και τελειώνουν με return 0; σε όλα τα παραδείγματα στο βιβλίο αρχίζει απλά με main() ποιό είναι το σωστό? κ γιατί ? Το βιβλίο είναι του 88. Το πρώτο standard σε C δημοσιευθήκε το 1989 και το δεύτερο το 1999. Δες την σελίδα αυτή: http://www.c-faq.com/ansi/maindecl.html
Επισκέπτης Δημοσ. 26 Απριλίου 2010 Δημοσ. 26 Απριλίου 2010 Καλό είναι πάντως να αρχίζεις με int main() και να τελειώνεις με return 0;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.