C ++ ungetc () - C ++ Τυπική βιβλιοθήκη

Η λειτουργία ungetc () στο C ++ σπρώχνει τον προηγουμένως αναγνωσμένο χαρακτήρα στη ροή, έτσι ώστε να μπορεί να διαβαστεί ξανά.

Η συνάρτηση ungetc () ορίζεται στο αρχείο κεφαλίδας.

ungetc () πρωτότυπο

 int ungetc (int ch, FILE * stream);

Η συνάρτηση ungetc () ωθεί τον χαρακτήρα ch πίσω στο buffer που σχετίζεται με τη ροή αρχείων, εκτός αν το ch είναι ίσο με EOF. Εάν το ch είναι ίσο με το EOF, η λειτουργία αποτυγχάνει και δεν υπάρχει καμία αλλαγή στη ροή.

Οι κλήσεις στο ungetc () ενδέχεται να αποτύχουν εάν καλούνται περισσότερες από μία φορές χωρίς καμία λειτουργία ανάγνωσης ή επανατοποθέτησης στη μέση.

Εάν μια κλήση στο ungetc () είναι επιτυχής, το τέλος της σημαίας κατάστασης αρχείου διαγράφεται.

Για δυαδικές ροές, μια επιτυχημένη κλήση για να ξεχάσετε τη μείωση του δείκτη θέσης ροής κατά μία. Εάν η ένδειξη θέσης ροής είναι μηδέν, η συμπεριφορά είναι απροσδιόριστη.

Για ροή κειμένου, μια επιτυχημένη κλήση στο ungetc τροποποιεί τον δείκτη θέσης ροής με μη καθορισμένο τρόπο. Ωστόσο, είναι εγγυημένο ότι μετά την ανάκτηση όλων των χαρακτήρων προώθησης με λειτουργία ανάγνωσης, η ένδειξη θέσης ροής είναι ίση με την τιμή της πριν καλέσετε το ungetc ().

ungetc () Παράμετροι

  • ch: Ο χαρακτήρας που πρέπει να ωθηθεί πίσω.
  • stream: Ροή αρχείου όπου ο χαρακτήρας ωθείται προς τα πίσω.

ungetc () Επιστροφή τιμής

  • Με επιτυχία, η συνάρτηση ungetc () επιστρέφει τον χαρακτήρα ch.
  • Σε περίπτωση αποτυχίας, το EOF επιστρέφεται χωρίς αλλαγή της ροής.

Παράδειγμα: Πώς λειτουργεί η λειτουργία ungetc ();

 #include #include #include using namespace std; int main() ( int c; long value = 0; char str() = "101axc"; FILE *fp = fopen("file.txt", "r+"); fputs(str,fp); rewind(fp); while(1) ( c = fgetc(fp); if (isdigit(c)) value = value*10 + c - '0'; else break; ) ungetc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

Όταν εκτελείτε το πρόγραμμα, μια πιθανή έξοδος θα είναι:

 Τιμή = 101

ενδιαφέροντα άρθρα...