Tôi đã viết trình đọc/ghi CSV của riêng mình trong C để lưu trữ bản ghi trong cột ký tự trong cơ sở dữ liệu ODBC. Thật không may tôi đã phát hiện ra nhiều trường hợp cạnh mà chuyến đi qua việc thực hiện của tôi, và tôi đã đi đến kết luận vấn đề của tôi là tôi đã không xác định nghiêm ngặt các quy tắc cho CSV. Tôi đã đọc RFC4180, nhưng nó có vẻ không đầy đủ và không giải quyết được sự mơ hồ.Định nghĩa nghiêm ngặt để đọc/ghi tệp CSV
Ví dụ: "" được coi là mã thông báo trống hoặc dấu ngoặc kép? Các dấu ngoặc kép có khớp với bên ngoài hoặc từ trái sang phải không? Tôi phải làm gì với chuỗi đầu vào có dấu nháy đơn chưa từng có? Mớ hỗn độn thực sự bắt đầu khi tôi có các thẻ lồng nhau, tăng gấp đôi ký tự trích dẫn thoát.
Điều tôi thực sự cần là tiêu chuẩn CSV chính xác mà tôi có thể triển khai trong mã. Mỗi khi tôi cảm thấy tôi đã đóng đinh mọi trường hợp góc, tôi tìm thấy một cái khác. Tôi chắc chắn vấn đề này đã được mulled hơn và giải quyết nhiều lần hơn bởi tâm trí cao cấp của tôi, có ai viết một định nghĩa nghiêm ngặt của CSV mà tôi có thể thực hiện trong mã? Tôi nhận ra C không phải là ngôn ngữ lý tưởng ở đây, nhưng tôi không có một sự lựa chọn về trình biên dịch ở giai đoạn này; Tôi cũng không thể sử dụng thư viện của bên thứ ba (trừ khi nó biên dịch với C-90). Boost không phải là một tùy chọn vì trình biên dịch của tôi không hỗ trợ C++. Tôi đã dự tính bỏ CSV cho XML, nhưng nó có vẻ như quá mức cần thiết để lưu trữ một vài mã thông báo trong một bản ghi cơ sở dữ liệu 256 ký tự. Bất kỳ ai đã tạo một thông số CSV chính xác?
http://stackoverflow.com/questions/14115529/parse-csv-file-in-c Thư viện được đề xuất ở đây tuân thủ ANSI C89. – Nobilis