absolut_user Δημοσ. 9 Μαρτίου 2006 Δημοσ. 9 Μαρτίου 2006 fflush(stdin); getchar(); return 0; ayta ta tria sto telos enos programatos ti kanoun?? otan vazw mono to getchar(); to programa klinei amesws meta tin eisagwgi twn timwn... an valw kai ta alla tote menei anoixto... peite mou an mporeite ti kanoun..kai pote xrisimeuoun....tnx apo twra...!!!
tolak Δημοσ. 9 Μαρτίου 2006 Δημοσ. 9 Μαρτίου 2006 fflush(stdin);getchar(); return 0; ayta ta tria sto telos enos programatos ti kanoun?? otan vazw mono to getchar(); to programa klinei amesws meta tin eisagwgi twn timwn... an valw kai ta alla tote menei anoixto... peite mou an mporeite ti kanoun..kai pote xrisimeuoun....tnx apo twra...!!! Ρε φίλε απο που απο το ηράκλειο είσαι ?
eurander Δημοσ. 9 Μαρτίου 2006 Δημοσ. 9 Μαρτίου 2006 Το fflush(stdin) απο οσο ξερω ειναι επικινδυνη κληση, με την εννοια οτι το ορισμα της fflush πρεπει να ειναι *output* buffer και οχι *input* buffer, οπως το stdin. Η fflush "αδειαζει", κανει flush, τους buffers που χρησιμοποιει ο χρηστης για καποιο stream Κανε man fflush για περισσοτερες πληροφοριες. H getchar παιρνει ενα χαρακτηρα. Αν δεν εχει ορισμα, παιρνει ενα χαρακτηρα απο το stdin (πληκτρολογιο). Κανε man getchar για περισσοτερες πληροφοριες. Η return επιστρεφει τον ελεγχο στη συναρτηση που *καλεσε* τη συναρτηση που τρεχει αυτη τη στιγμη. Μπορει να επιστρεψει και καποιο αποτελεσμα, οπως το 0 (μαλλον τιποτα) στην προκειμενη περιπτωση.
bird Δημοσ. 9 Μαρτίου 2006 Δημοσ. 9 Μαρτίου 2006 Aυτές οι εντολές στο τέλος ενός προγράμματος χρησημεύουν στο να μην κάνει exit το πρόγραμμα απ'ευθείας και να περιμένει τον χρήστη να πατήσει enter. H fflus(stdin) πετάει όλους τους χαρακτήρες που μπορεί να έχουν μείνει στον input buffer από προηγούμενες εισαγωγές από το πληκτρολόγιο. Η getchar() διαβάζει έναν χαρακτήρα από το input (stdin). Αν κατά τη διάρκεια του προγράμματος έχεις εισάγει κάποια δεδομένα απο το πληκτρολόγιο, τότε κάποιοι χαρακτήρες (όπως για πχ. το \n) είναι πιθανόν να έχουν μείνει στον input buffer. Έτσι όταν η getchar() πηγαίνει στο τέλος να διαβάσει έναν χαρακτήρα τον βρίσκει έτοιμο και δεν περιμένει τον χρήστη να πατήσει enter. Για τη return είναι όπως τα είπε ο eurander... Τώρα έτσι που τα έγραψα δεν ξέρω τι κατάλαβες αλλά ελπίζω να βοήθησα λίγο. @tolak: Το Ηράκλειο που κολάει???????????? (edit: Τώρα είδα πού κολάει ) @eurander: Δεν είναι και τόσο επικίνδυνη η κλίση της fflus αρκεί να καταλαβαίνεις πότε την χρησημοποιείς. Και συνήθως γίνεται σε τέτοιες περιπτώσεις.
Sta Δημοσ. 9 Μαρτίου 2006 Δημοσ. 9 Μαρτίου 2006 fflush(stdin);getchar(); return 0; ayta ta tria sto telos enos programatos ti kanoun?? otan vazw mono to getchar(); to programa klinei amesws meta tin eisagwgi twn timwn... an valw kai ta alla tote menei anoixto... peite mou an mporeite ti kanoun..kai pote xrisimeuoun....tnx apo twra...!!! Η εντολή fflush(stdin) προκαλεί undefined behaviour, δηλαδή μπορεί να κάνει αυτό που ανέφεραν οι προλαλήσαντες (να αδειάσει το input stream) αλλά μπορεί και να κάνει τον υπολογιστή σου να κολλήσει, ως εκ τούτου μην τη χρησιμοποιείς. Ισοδύναμο αποτέλεσμα με αυτό που θέλεις μπορείς να το πετύχεις με την εξής συνάρτηση: > /* flush to end-of-line */ int flushln(FILE *f) { int ch; while ('\n' != (ch = fgetc(f)) && (EOF != ch)) /* more */; return ch; } /* flushln */ Για τα υπόλοιπα σε κάλυψαν οι προηγούμενοι νομίζω.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.