es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sscanf leerá enteros pero no dobles (c)?

Tengo lo siguiente almacenado en un array de caracteres:

“1, 1.0, 1.000, 1.0000”

Estoy intentando analizarlo para obtener un entero y tres dobles con lo siguiente:

sscanf(miString, “%d %lf %lf %lf”, &(miEstructura->I1), &(miEstructura->D1), &(miEstructura->D2), &(miEstructura->D3));
printf(“%d %lf %lf %lf”, miEstructura->I1, miEstructura->D1, miEstructura->D2, miEstructura->D3);

lo que produce la salida:

1 0.000000 0.000000 0.000000

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es el espaciado en la cadena de formato. La cadena de formato espera espacios entre los valores separados por comas en el array de caracteres, pero el array de caracteres en realidad no contiene espacios entre los valores. Por lo tanto, cuando el código intenta analizar los valores, no reconoce los valores separados y establece todos los valores dobles en 0.

    Para solucionar esto, podemos modificar la cadena de formato para incluir comas en lugar de espacios, tal como aparecen en el array de caracteres:

    sscanf(miCadena, "%d, %lf, %lf, %lf", &(miEstructura->I1), &(miEstructura->D1), &(miEstructura->D2), &(miEstructura->D3));

    Cuando ejecutamos esto, la salida debería ser 1 1.000000 1.000000 1.000000, los valores esperados.

Comments are closed.