Ho scritto il mio lettore/scrittore CSV in C per archiviare i record in una colonna di caratteri in un database ODBC. Sfortunatamente ho scoperto molti casi limite che inciampano sulla mia implementazione, e sono giunto alla conclusione che il mio problema è che non ho definito rigorosamente le regole per CSV. Ho letto RFC4180, ma sembra incompleto e non risolve le ambiguità.Definizione rigorosa per lettura/scrittura file CSV
Ad esempio, "" deve essere considerato un token vuoto o una virgola doppia? Le virgolette coincidono all'esterno o tra sinistra e destra? Cosa devo fare con una stringa di input che ha virgolette singole non abbinate? Il vero casino comincia quando ho dei token nidificati, che raddoppiano i caratteri di citazione evasi.
Quello di cui ho veramente bisogno è uno standard CSV definitivo che possa essere implementato nel codice. Ogni volta che sento di aver inchiodato ogni angolo, ne trovo un altro. Sono sicuro che questo problema è stato ripensato e risolto molte volte da menti superiori alle mie, qualcuno ha scritto una definizione rigorosa di CSV che posso implementare nel codice? Mi rendo conto che C non è la lingua ideale qui, ma non ho una scelta riguardo al compilatore in questa fase; né posso usare una libreria di terze parti (a meno che non compili con C-90). Boost non è un'opzione in quanto il mio compilatore non supporta C++. Ho pensato di abbandonare CSV per XML, ma sembra eccessivo per la memorizzazione di alcuni token in un record di 256 caratteri. Qualcuno ha fatto una specifica CSV definitiva?
http://stackoverflow.com/questions/14115529/parse-csv-file-in-c La biblioteca ha suggerito qui è ANSI C89 compatibile. – Nobilis