Chương trình của tôi đang đọc một tệp văn bản chứa nhiều dòng văn bản khác nhau cho tệp cài đặt. Một số dòng có thể rất lớn. Hiện tại kích thước bộ đệm là 4096 ký tự. Có thể một số dòng có thể vượt quá điều này, cho dù thông qua sự độc hại hoặc do các yếu tố khác nhau hoạt động trong chương trình.Có thư viện C phổ biến để đọc các cặp tên/giá trị từ một tệp không?
Các thói quen hiện tại khá tẻ nhạt để viết và bây giờ tôi muốn mở rộng nội dung có thể có của tệp, điều này đòi hỏi nhiều mã lặp đi lặp lại tẻ nhạt này. (Điều này là dành cho tệp loại cài đặt, bao gồm các cặp name value
và tiêu đề phần không thường xuyên. Một số giá trị số cần được đọc dưới dạng chuỗi do nhiều độ chính xác).
Điều chính tôi muốn là đọc một dòng chiều dài tùy ý mà không bị tràn bộ đệm. Tôi vừa mới phát hiện ra đường dây có thể làm điều này cho tôi, nhưng, ở đó có thiên đường vì một thư viện sẽ chỉ làm toàn bộ sự tẻ nhạt này cho tôi?
chỉnh sửa:
Tôi không muốn bị buộc phải đặt một dấu =
giữa tên và giá trị, một không gian trống nên đủ như tách.
Bằng cách phổ biến rộng rãi, tôi có nghĩa là thư viện sẽ có sẵn trong các gói tiêu chuẩn của bản phân phối Linux phổ biến.
Tôi biết về libconfig nhưng có vẻ như quá mức cần thiết cho các yêu cầu của tôi.
trong trường hợp này tôi cũng đề nghị viết nó, nó có vẻ tầm thường đủ. Vấn đề duy nhất là làm thế nào bạn sẽ lưu trữ bảng của bạn, nếu điều này là tinh khiết C sau đó không có std :: bản đồ cho bạn, nhưng tôi đoán bạn có cấu trúc dữ liệu của riêng bạn đã? –
Cảm ơn bạn đã trả lời sscanf% [..], nhưng sau khi thử nghiệm, bạn đang thiếu dấu mũ: '"% [^:]:% [^ \ n] "', chúc mừng, tôi sẽ đi tuyến đường này . –
Đã sửa. Xin lỗi vì thiếu sót. – piotr