Especificadores de Formato

 1. - Especificadores de Formato en la Función scanf del Lenguaje C. 


• ¿Qué podemos realizar con la función scanf? Mediante la función scanf podemos introducir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres a través del teclado. En definitiva, scanf lee datos formateados de la entrada estándar. Cuando hablamos de datos formateados, nos referimos a que los datos se pueden presentar en distintos formatos. La función devolverá el número de datos que se han introducido correctamente. Una referencia a la función scanf se escribe de la siguiente manera: ¨ scanf (cadena de control, lista de argumentos)¨ en donde cadena de control hace referencia a una cadena de caracteres que contiene información sobre el formato de los datos (debe haber tantos códigos de formato como argumentos), y la lista de argumentos son argumentos que representan los datos.

 • ¿Que se incluye en la cadena de control? 


En la cadena de control se incluyen grupos individuales de caracteres cada uno de los cuales deben comenzar por %. Normalmente, un grupo de caracteres estará formado por el signo de porcentaje seguido de un carácter de conversión que indica el tipo del dato correspondiente. Dentro de la cadena de control se pueden encontrar varios caracteres seguidos o separados por espacios en blanco, tabuladores o caracteres de nueva linea (es muy frecuente el uso de caracteres en blanco para separar grupos de caracteres). El uso de caracteres de espaciado hace que scanf lea, pero no guarde, cualquier número de espacios en blanco hasta el primer carácter no blanco. (recordar que delante de estos caracteres va siempre %). Carácter Significado c Lee un carácter simple d Lee un entero decimal i Lee un entero decimal, octal o hexadecimal e Lee un número en punto flotante f Lee un número en punto flotante g Usa %e o %f, el más corto en long. o Lee un entero octal corto s Lee una cadena de caracteres u Lee un entero decimal sin signo x Lee un entero hexadecimal. Lee una cadena de caracteres con caracteres de espaciado p Lee un puntero 

• CARACTERISTICAS AVANZADAS DE SCANF

 Veremos en primer lugar cómo podemos limitar el número de los caracteres especificando una longitud de campo máxima para ese dato. Para ello, se introduce en la cadena de control un entero sin signo que indica la longitud del campo, entre el signo % y el carácter de conversión. 2. Especificadores de Formato en la Función printf del lenguaje C. 

• ¿Qué es el formato printf? 


Printf es una función especial porque recibe un número variable de parámetros. El primer parámetro es fijo y es la cadena de formato. En ella se incluye texto a imprimir literalmente y marcas a reemplazar por texto que se obtiene de los parámetros adicionales. Por tanto, printf se llama con tantos parámetros como marcas haya en la cadena de formato más uno (la propia cadena de formato). 

El siguiente ejemplo muestra cómo se imprime el valor de la variable contador.

 printf("El valor es %d.\n", contador) 

El símbolo “%” denota el comienzo de la marca de formato. La marca “%d” se reemplaza por el valor de la variable contador y se imprime la cadena resultante. El símbolo “\n” representa un salto de línea. La salida, por defecto, se justifica a la derecha del ancho total que le hallamos dado al campo, que por defecto tiene como longitud la longitud de la cadena. 

 • ¿Qué es la función fflush? 


La función del fflush, realiza la limpieza del buffer de entrada (stdin) standar input. usualmente quedan almacenados algunos datos en el buffer sobre todo saltos de linea y espacio y se debería usar antes de cada scanf con el fin de garantizar que el buffer este limpio. rara vez debo usar este comando en C++ pero en C lo uso muy frecuentemente, puede que exista algún método más efectivo.

 • ¿Para qué sirve esta función? 

Ejemplo 1: Si ejecutamos el siguiente programa: #include int main() { int a, b; printf( "Introduzca el primer numero: " ); scanf( "%d", &a ); printf( "Introduzca el segundo numero: " ); scanf( "%d", &b ); printf( "Los valores son: %d, %d ", a, b ); return 0; } por pantalla veremos algo parecido a: Introduzca el primer numero: 76 Introduzca el segundo numero: 45 Los valores son: 76, 45 Obsérvese que, cuando se ejecuta scanf, por ejemplo, en la primera vez scanf( "%d", &a ); el programa se detiene a la espera de que el usuario teclee el dato de entrada requerido, el cual es almacenado, temporalmente, en el buffer (memoria intermedia) de la entrada estándar. Y cuando se pulsa la tecla INTRO, es, en ese momento, cuando a la variable a se le asigna el valor introducido. Pero, además, se produce un salto de línea automático, de forma que, después de introducir el número 76, la siguiente instrucción se muestra una línea más abajo. De igual forma, después de la instrucción scanf( "%d", &b ); también se produce un salto de línea automático. En este ejemplo todo ha ido muy bien, sin embargo, se tiene que tener especial cuidado si utilizados scanf para leer caracteres. 4. Tipos de Errores en Lenguaje C, cada uno con su descripción y ejemplos.

 • ERRORES EN TIEMPO DE COMPILACIÓN



 Los errores de compilación ocurren porque la sintaxis del lenguaje no es correcta, de cajón este tipo de errores no permiten que la aplicación se ejecute, por ejemplo: Olvidarnos de un punto y coma al final de una sentencia. No cerrar llaves en algún bloque de código, método, clase o en alguna estructura de control. Repetir variables con el mismo nombre, aunque sean de diferente tipo. EJEMPLO: package com.ecodeup.errores; public class TestErrores { public static void main(String[] args) { // TODO Auto-generated method stub // errores en tiempo de copilación int suma=0; String nombre; suma=nombre; //error 1 int valor=0; short numero=0; numero=valor; //error 2 String valor=""; //error 3 int mayor; int menor; if (true){ mayor=menor;//error 4 }

 • ERRORES EN TIEMPO DE EJECUCIÓN

 Estos errores ocurren cuando la aplicación se está ejecutando, imaginate que cuando estás haciendo la presentación o probando tu aplicación en público o frente a tu profesor y de repente pummm la aplicación explota (se cuelga) por lo general a este tipo de errores se los conoce como errores de compilación, ahora, ¿por qué ocurren estos errores?, bueno, hay muchos factores desde los más básicos como por ejemplo: El usuario ingresa valores diferentes a los que la aplicación recibe Acceder a una posición en un arreglo la cual no existe. Almacenar cadenas donde se debe almacenar números EJEMPLO: package com.ecodeup.errores; public class TestErrores { public static void main(String[] args) { // TODO Auto-generated method stub //errores en tiempo de ejecución int miArreglo[] = new int [5]; miArreglo[5]=0; int sumaNotasExamenes=60; int numeroExamenes=0; int promedio=sumaNotasExamenes/numeroExamenes; }

 • ERRORES LÓGICOS

 Estos son los más difíciles de detectar y corregir y pues bueno porque digo que son difíciles, es que con este tipo de errores la aplicación compila y se ejecuta de forma normal, pero ¿y entonces dónde está el error? El error se da porque la aplicación no muestra los resultados esperados digamos que ya hice el algoritmo y el resultado que debo obtener es 10, pero en la aplicación obtengo 5 o lo peor de todo que de seguro te a pasado, que escribes el código haces pruebas y los resultados son correctos subes a producción y resulta que para un caso particular no se obtuvo el resultado esperado. 



A continuación, se muestra una tabla con estos especificadores de formato dependiendo del tipo de dato a los que representan:

Tipo de dato Especificadores de formato Comentario


       Int          %d                 Entero con signo


Float             %f               Real con signo


Char           %c                      carácter


Char [n]              %s            Cadena de caracteres 

                                                                    

Comentarios