2010-10-20 14 views
5

quiero leer en una cadena y analizarlo con sscanf. Aunque no quiero leer en ningún espacio al principio.sscanf saltar sobre un espacio en blanco en el inicio

cadena de muestra.

@a Bear Tiger 

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

Tengo eso.

El problema es que si la línea va en como dicen

 @a Bear Tiger 

debe ser:

@a Bear Tiger 

que va a querer leer en los espacios hasta el carácter @. ¿Cómo puedo omitir el espacio en blanco y leer el carácter @?

Gracias.

+0

1 para el uso de los especificadores de ancho de campo correcto en su cadena de formato 'scanf'. –

Respuesta

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

Esto es necesario porque scanf solamente se salta los espacios en blanco para (la mayoría) especificaciones de conversión. Pero @ es un "carácter ordinario", no una especificación de conversión, por lo que no hay omisión. Sin embargo, al agregar espacios en blanco a la cadena de formato se fuerza a ignorar los espacios en blanco de entrada.

+0

+1, eso debería funcionar. Me preguntaba por qué eliminaste la respuesta. – codaddict

+0

@coda, estaba cuestionando mi respuesta por el motivo indicado en las dos respuestas eliminadas. 'scanf' * does * omite espacios en blanco en las especificaciones. Sin embargo, he descubierto la distinción. –

+0

Extraño, pensé que había intentado esto. ¡Gracias! – Matt

Cuestiones relacionadas