Algunas consideraciones...

2009/07/18
sobre printf() y scanf().

Si ha practicado un poco se habrá dado cuenta que cuando algunas cifras en coma flotante no necesariamente requieren todos los dígitos de precisión, al imprimir se convierten en una invasión de ceros. Obviamente, los ceros rellenan los dígitos de precisión que no se han utilizado.

Debe saber que los códigos de formato pueden tener modificadores.

En el caso mencionado, para especificar el número de decimales a imprimir de un número en coma flotante, sólo basta colocar cuántos dígitos a la izquierda, cuántos a la derecha. "%.3f" y "%2.2f" son ejemplos de esto. El primer ejemplo significa que hay una restricción sobre los dígitos a la derecha del punto, digamos, del número 3.330000, que al imprimirse se mostraría 3.330.

En números enteros y en cadenas el modificador actuaría diferente. La cadena "preprocesador", impresa con el siguiente modificador "%4.6s", se mostraría como "prepro", siguiente la lógica de "al menos 4 caracteres pero menos de 6".


*******************************************************************************


De scanf() sólo hay que mencionar unos detalles.

1) Para leer cadenas de caracteres no es necesario el ampersand (&) junto a la variable.

char nombre[20];
...
...
scanf("%s", nombre);

2) Puede incluir modificadores. En el último ejemplo, si el modificador fuera "%10s", se leerían sólo hasta 10 caracteres para nombre.

3) scanf() no sólo lee una variable a la vez. 'scanf("%c%c%c%c%c", &e&d&c&b&a);', por ejemplo, asigna un caracter a 5 variables.

4) Con caracteres ajenos en la cadena de control (letras, espacios en blanco, etc) ocurrirán comportamientos especiales.

Por ejemplo, "%s ", haría que luego de introducir un dato fuese necesario introducir cualquier caracter diferente a " " (espacio en blanco).

0 comentarios:

Publicar un comentario