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

Hàm vsscanf () trong C ++ được sử dụng để đọc dữ liệu từ bộ đệm chuỗi.

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

vsscanf () nguyên mẫu

 int vsscanf (const char * buffer, const char * format, va_list vlist);

Hàm vsscanf () đọc dữ liệu từ bộ đệm chuỗi ký tự đệm và lưu trữ các giá trị vào các vị trí tương ứng như được xác định bởi vlist.

thông số vsscanf ()

  • format: Con trỏ tới một chuỗi ký tự kết thúc bằng null chỉ định cách đọc đầu vào. Nó bao gồm các chỉ định định dạng bắt đầu bằng%.
    Chuỗi định dạng có các phần sau:
    • Các ký tự không có khoảng trắng ngoại trừ% mỗi ký tự sử dụng một ký tự giống hệt nhau từ luồng đầu vào. Nó có thể khiến hàm không thành công nếu ký tự tiếp theo trên luồng không so sánh bằng nhau.
    • Ký tự khoảng trắng: Tất cả các ký tự khoảng trắng liên tiếp được coi là ký tự khoảng trắng duy nhất. Hơn nữa, ' n', ' t' và '' được coi là giống nhau.
    • Đặc điểm kỹ thuật chuyển đổi: Nó tuân theo định dạng sau:
      • Ký tự% ban đầu chỉ định phần đầu
      • Một * tùy chọn được gọi là ký tự loại bỏ gán. Nếu ký tự này có mặt, vsscanf () không gán kết quả cho bất kỳ đối số nhận nào.
      • Một số nguyên dương tùy chọn chỉ định độ rộng trường tối đa. Nó chỉ định số ký tự tối đa mà vsscanf () được phép sử dụng khi thực hiện chuyển đổi được chỉ định bởi đặc tả chuyển đổi hiện tại.
      • Công cụ sửa đổi độ dài tùy chọn chỉ định kích thước của đối số nhận.
      • Công cụ định dạng chuyển đổi.
    Định dạng thông số
    Định dạng chỉ định Sự miêu tả
    % Khớp với chữ%
    c Khớp một ký tự hoặc nhiều ký tự. Nếu chiều rộng được xác định, hãy khớp chính xác các ký tự chiều rộng.
    S Đối sánh các ký tự không có khoảng trắng liên tiếp. Nếu chiều rộng được xác định, khớp chính xác các ký tự chiều rộng hoặc cho đến khi tìm thấy khoảng trắng đầu tiên.
    (bộ) Khớp một chuỗi ký tự không trống từ tập ký tự đã cho. Nếu xuất hiện ở đầu tập hợp, thì tất cả các ký tự không có trong tập hợp đều được so khớp.
    d Khớp với một số nguyên thập phân.
    Tôi Khớp với một số nguyên.
    o Khớp với một số nguyên bát phân không dấu.
    X hoặc x Khớp với một số nguyên thập lục phân không dấu.
    u Khớp với một số nguyên thập phân không có dấu.
    A hoặc a, E hoặc e, F hoặc f, G hoặc g Khớp với một số dấu phẩy động.
    n Trả về số ký tự đã đọc cho đến nay.
    p Khớp một chuỗi ký tự được xác định triển khai xác định một con trỏ.

    Vì vậy, định dạng chung của trình định dạng là:
     % (*) (width) (length) specifier
  • vlist: Danh sách các đối số để nhận các đầu vào.

vsscanf () Giá trị trả về

  • Nếu thành công, hàm vsscanf () trả về số đối số được đọc thành công.
  • Khi không thành công, EOF được trả về.

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

 #include #include void read(const char* buf, const char * format,… ) ( va_list args; va_start (args, format); vsscanf (buf, format, args); va_end (args); ) int main () ( char buffer(100) = "Bruce Wayne Batman"; char fname(20), lname(20), superhero(20); read(buffer, "%s %s %s", fname, lname, superhero); printf("%s %s is %s.", fname, lname, superhero); return 0; )

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

 Bruce Wayne là Người Dơi.

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