Προς το περιεχόμενο

eof c


^LeoNine^

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα

διαβάζω ένα βιβλίο για την 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)

 

(το παραπάνω ερώτημα το έχω βάλει σε άλλο φόρουμ αλλά δεν πήρα απάντηση, πιθανόν επειδή είναι λίγα τα άτομα κ αυτοί που ξέρουν αργούν να το δουν)

Δημοσ.

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;
}

Δημοσ.

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.

Δημοσ.

τέλεια απάντηση

χίλια ευχαριστώ

όχι τίποτα άλλο, είμαι τόσο κολλημένο άτομο, που αν δεν καταλάβω κάτι, δεν συνεχίζω

είναι δύσκολο να μάθεις μια τέτοια γλώσσα μόνος σου, αλλά έχω πείσμα..

τους επόμενους μήνες θα με δείτε να εξελίσσομε

 

άσχετο

παρατήρησα πως οι δύο κώδικες που έγραψε το παιδί παραπάνω

 

αρχίζουν με int main()

και τελειώνουν με return 0;

 

σε όλα τα παραδείγματα στο βιβλίο αρχίζει απλά με main()

ποιό είναι το σωστό? κ γιατί ?

Δημοσ.
τέλεια απάντηση

άσχετο

παρατήρησα πως οι δύο κώδικες που έγραψε το παιδί παραπάνω

 

αρχίζουν με int main()

και τελειώνουν με return 0;

 

σε όλα τα παραδείγματα στο βιβλίο αρχίζει απλά με main()

ποιό είναι το σωστό? κ γιατί ?

 

Το βιβλίο είναι του 88. Το πρώτο standard σε C δημοσιευθήκε το 1989 και το δεύτερο το 1999. Δες την σελίδα αυτή:

http://www.c-faq.com/ansi/maindecl.html

Δημοσ.

Καλό είναι πάντως να αρχίζεις με int main() και να τελειώνεις με return 0;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...