Ho già ottenuto del codice per leggere un file di testo utilizzando fscanf()
e ora ho bisogno che venga modificato in modo che i campi che prima erano bianchi non necessitassero di consentire spazi bianchi. Il file di testo è sostanzialmente in forma di:Can fscanf() può leggere lo spazio bianco?
titolo: DATI
titolo: DATI
ecc ...
quali è fondamentalmente analizzato utilizzando fgets(inputLine, 512, inputFile); sscanf(inputLine, "%*s %s", &data);
, leggendo i campi di dati e ignorando i titoli, ma ora alcuni dei campi dati devono consentire gli spazi. Devo ancora ignorare il titolo e lo spazio immediatamente dopo, ma poi leggere il resto della riga incluso lo spazio bianco.
Esiste comunque lo scopo della funzione sscanf()
?
In caso contrario, qual è il più piccolo cambiamento che posso apportare al codice per gestire correttamente lo spazio bianco?
AGGIORNAMENTO: Ho modificato la domanda per sostituire fscanf() con fgets() + sscanf(), che è ciò che il mio codice sta effettivamente utilizzando. Non ho davvero pensato che fosse rilevante quando ho scritto per la prima volta la domanda, motivo per cui l'ho semplificato in fscanf().
Se si è utilizzato l'analisi con 'scanf', è anche possibile analizzare in precedenza qualcosa come' title: DATA title: DATA' (cioè tutto su una riga). Se vuoi consentire lo spazio bianco nei valori, allora quale sarà il terminatore? Se newline, sembra che il tuo codice originale fosse un po 'troppo lassista ... –
Inoltre, come si decide sulla dimensione del buffer 'str' e come si fa a garantire che non esca? –
sì, quando il DATI può avere spazi bianchi, la nuova riga verrà utilizzata come terminatore –