C ++ ungetc () - Thư viện chuẩn C ++

Hàm ungetc () trong C ++ đẩy ký tự đã đọc trước đó trở lại luồng để có thể đọc lại.

Hàm ungetc () được định nghĩa trong tệp tiêu đề.

nguyên mẫu ungetc ()

 int ungetc (int ch, FILE * stream);

Hàm ungetc () đẩy ký tự ch trở lại vùng đệm được liên kết với luồng tệp trừ khi ch bằng EOF. Nếu ch bằng EOF, hoạt động không thành công và không có thay đổi trong luồng.

Các cuộc gọi đến ungetc () có thể không thành công nếu nó được gọi nhiều lần mà không có bất kỳ thao tác đọc hoặc định vị lại ở giữa.

Nếu một lệnh gọi đến ungetc () thành công, cờ trạng thái kết thúc tệp sẽ bị xóa.

Đối với các luồng nhị phân, một lệnh gọi thành công tới ungetc sẽ làm giảm chỉ báo vị trí luồng đi một. Nếu chỉ báo vị trí luồng bằng 0, hành vi là không xác định.

Đối với luồng văn bản, lệnh gọi thành công tới ungetc sẽ sửa đổi chỉ báo vị trí luồng theo cách không xác định. Nhưng được đảm bảo rằng sau khi tất cả các ký tự được đẩy lùi được truy xuất bằng thao tác đọc, chỉ báo vị trí luồng sẽ bằng giá trị của nó trước khi gọi ungetc ().

tham số ungetc ()

  • ch: Nhân vật bị đẩy lùi.
  • stream: Dòng tệp nơi ký tự bị đẩy lùi.

ungetc () Giá trị trả về

  • Khi thành công, hàm ungetc () trả về ký tự ch.
  • Khi không thành công, EOF được trả về mà không thay đổi luồng.

Ví dụ: Hàm ungetc () hoạt động như thế nào?

 #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; )

Khi bạn chạy chương trình, đầu ra có thể sẽ là:

 Giá trị = 101

thú vị bài viết...