Ya tengo un código para leer un archivo de texto usando fscanf()
, y ahora lo necesito modificado para que los campos que anteriormente estaban libres de espacio en blanco tengan que permitir el espacio en blanco. El archivo de texto es, básicamente, en forma de:¿Puede fscanf() leer espacios en blanco?
título: DATOS
título: DATOS
etc ...
el cual es básicamente analiza sintácticamente usando fgets(inputLine, 512, inputFile); sscanf(inputLine, "%*s %s", &data);
, la lectura de los campos de datos y ignorando los títulos, pero ahora algunos de los campos de datos deben permitir espacios. Todavía tengo que ignorar el título y el espacio en blanco inmediatamente después, pero luego leo en el resto de la línea, incluido el espacio en blanco.
¿Hay alguna forma de hacerlo con la función sscanf()
?
Si no es así, ¿cuál es el cambio más pequeño que puedo hacer en el código para manejar correctamente el espacio en blanco?
ACTUALIZACIÓN: Edité la pregunta para reemplazar fscanf() con fgets() + sscanf(), que es lo que mi código está realmente usando. Realmente no pensé que fuera relevante cuando escribí la pregunta por qué lo simplifiqué a fscanf().
Si solía analizarlo con 'scanf', entonces también podría analizar previamente algo como' title: DATA title: DATA' (es decir, todo en una línea). Si desea permitir espacios en blanco en valores, ¿cuál será el terminador? Si newline, parece que su código original era un poco flojo ... –
Además, ¿cómo decide el tamaño del búfer 'str' y cómo se asegura de que no se desborde? –
sí, cuando los DATOS pueden tener espacios en blanco, se usará la nueva línea como el terminador –