Il mio programma sta leggendo un file di testo contenente varie righe di testo per un file di impostazioni. Alcune linee potrebbero diventare molto grandi. Attualmente la dimensione del buffer è 4096 caratteri. È possibile che alcune linee potrebbero superare questo, sia per malizia o a causa di vari fattori che operano all'interno del programma.Esiste una libreria C diffusa per la lettura di coppie nome/valore da un file?
Le routine correnti erano piuttosto noiose da scrivere e ora desidero espandere i possibili contenuti del file che richiederà più di questo noioso codice ripetitivo. (Questo è per un file di tipo impostazioni, costituito da coppie name value
e l'intestazione di sezione occasionale.Alcuni valori numerici devono essere letti come stringhe a causa della precisione multipla).
La cosa principale che voglio è leggere una linea di lunghezza arbitraria senza buffer overflow. Ho appena scoperto che getline può fare questo per me, ma, c'è per il cielo una biblioteca che farà tutto il resto di questa noiosità per me?
edit:
Non voglio essere costretto a effettuare un =
segno fra il nome e valori, uno spazio vuoto dovrebbe essere sufficiente come separatore.
Con estensione, voglio dire che la libreria dovrebbe essere disponibile nei pacchetti standard delle diffuse distribuzioni Linux.
Sono a conoscenza di libconfig ma sembra eccessivo per le mie esigenze.
in questo caso suggerisco anche di scriverlo, sembra abbastanza banale. L'unico problema è come conserverai la tua tabella, se questa è pura C allora non c'è std :: map per te, ma immagino tu abbia già le tue strutture dati? –
Grazie per il suggerimento sscanf% [..], ma dopo aver provato, ti manca un segno di omissione: '"% [^:]:% [^ \ n] "', saluti, ho intenzione di percorrere questa strada . –
corretto. Ci scusiamo per il caret mancante. – piotr