Ho fscanf per leggere le righe di impostazione da un file di configurazione. Queste impostazioni sono strettamente predefiniti formato che assomigliafscanf e carattere di nuova riga
name1=option1;
name2=option2;
...
in modo sostanzialmente lo faccio
fscanf(configuration,"%[^=]=%[^;];",name,option);
cui configurazione è il flusso di file e il nome e l'opzione di programmazione sono i buffer.
Il problema è che il buffer dei nomi contiene un carattere di nuova riga che non desidero. C'è un identificatore di formato che ho perso in "[^ ...]" impostato per saltare il carattere di nuova riga? Ad ogni modo, può essere risolto attraverso il formato specificatore di sempre?
BTW: Ingoiare il carattere di nuova riga da scrivendo questo
"%[^=]=%[^;];\n"
non è elegent credo che per il carattere di nuova linea potrebbe ripetere più di una volta da nessuna parte.
Se i campi 'nomeN' non possono contenere spazi bianchi, basta aggiungere uno spazio davanti alla stringa di formato -' "% [^ =] =% [^;];" '- per saltare gli spazi bianchi iniziali. Se possono, è necessario consumare la newline da sola con 'getchar()'. –
La risposta accettata è giusta, comunque, riguardo alle nuove righe ripetute è possibile usare '% * [\ n]' per leggere un numero arbitrario di ''\ n'' senza memorizzarle. – effeffe