2010-10-20 18 views
5

Voglio leggere in una stringa e analizzarlo con sscanf. Anche se non voglio leggere in nessuno spazio all'inizio.sscanf salta lo spazio bianco all'inizio

Esempio di stringa.

@a Bear Tiger 

sscanf(strLine, "@%1s %64s %64s", dir, name1, name2); 

Ho quello.

Il problema è se la linea va in come dicono

 @a Bear Tiger 

dovrebbe essere:

@a Bear Tiger 

che vorrà leggere negli spazi fino al carattere @. Come posso saltare lo spazio bianco e leggere dal carattere @.

Grazie.

+0

+1 per utilizzare gli specificatori della larghezza del campo corretti nella stringa di formato 'scanf'. –

risposta

12
sscanf(strLine, " @%1s %64s %64s", dir, name1, name2); 

Questo è necessario perché scanf salta solo spazi per la (la maggior parte) specifiche di conversione. Ma @ è un "carattere ordinario", non una specifica di conversione, quindi non c'è nessun salto. Tuttavia, l'aggiunta di spazi bianchi alla stringa del formato costringe a saltare gli spazi bianchi di input.

+0

+1, dovrebbe funzionare. Mi chiedevo perché hai cancellato la risposta. – codaddict

+0

@ coda, stavo indovinando la mia risposta per il motivo indicato nelle due risposte cancellate. 'scanf' * fa * salta lo spazio bianco nelle specifiche. Tuttavia, ho capito la distinzione. –

+0

Strano, pensavo di aver provato questo. Grazie! – Matt

Problemi correlati