Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Funciones de entrada/salida, Apuntes de Ingeniería Mecánica

Asignatura: Felix, Profesor: , Carrera: Ingeniería Mecánica, Universidad: UVA

Tipo: Apuntes

2013/2014

Subido el 13/11/2014

jorlopa
jorlopa 🇪🇸

4

(1)

1 documento

1 / 24

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Fundamentos de Informática
Departamento de Ingeniería de Sistemas y Automática. EII.
Universidad de Valladolid
C3
FUNCIONES DE
ENTRADA/SALIDA ESTANDAR
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Vista previa parcial del texto

¡Descarga Funciones de entrada/salida y más Apuntes en PDF de Ingeniería Mecánica solo en Docsity!

Fundamentos de Informática

Departamento de Ingeniería de Sistemas y Automática. EII.

Universidad de Valladolid

C

FUNCIONES DE

ENTRADA/SALIDA ESTANDAR

Índice

1. Introducción

2. Funciones de Entrada con formato

3. Funciones de Salida con formato

4. Temas de ampliación

 Especificadores de formato  Funciones de E/S de caracteres  Funciones de E/S de cadenas de caracteres

Funciones de Salida con formato

Nos permiten sacar por pantalla los valores de las variables o

expresiones.

  • printf ("formato",arg_1,arg_2,...,arg_n);

Escribe en pantalla con formato:  formato: cadena de formato de salida de datos.  arg_i : argumentos a incluir dentro del formato (pueden ser variables o expresiones).

#include <stdio.h> main() { float b = 5.1; int a=6; printf("Valores = %d, %f, %d\n", 5 , b, 3*a); }

La salida por pantalla es: Valores = 5, 5.1, 18

Funciones de Salida con formato

En la pantalla se mostrarán de forma fidedigna los caracteres

que aparecen en la función printf() entre comillas,

incluyendo los espacios en blanco y caracteres especiales como

el retorno de línea \n.

La única excepción se produce cuando incluimos el

especificador de formato %. En este caso, se mostrará por

pantalla la variable asociada correspondiente, y con el formato

elegido.

#include <stdio.h> main() { float b = 5.1; int a=6; printf("Valores = %d, %f, %d\n", 5 , b, 3*a); }

La salida por pantalla es: Valores = 5, 5.1, 18

Funciones de Salida con formato

Ejemplo de uso de printf

#include <stdio.h> main() { printf("printf\n"); printf("%c%c%c%c%c%c%c",'p','r','i','n','t','f','\n'); printf("%s\n","printf"); }

La salida es: printf printf printf

Funciones de Salida con formato

Ejemplo de uso de printf

#include <stdio.h> main() { int a=10 , b = 15; printf("%d + %d = %d\n", a , b , a + b); printf("%d + %d = [%8d]\n", a , b , a + b); }

La salida es: 10 + 15 = 25 10 + 15 = [ 25]

8 espacios en total, ajustados a la derecha

Funciones de Entrada con formato

La gran mayoría de los programas aceptan unos datos de entrada que procesan de acuerdo con su código para producir unos resultados como salida.

Los programas que tenemos hasta ahora no resultan muy útiles. No tienen capacidad para aceptar ningún tipo de entrada. Todavía somos incapaces de hacer que el ordenador reciba cualquier tipo de información que le podríamos dar a través del teclado.

  • scanf("formato", dir_1, dir_2, ..., dir_n);

Lee entradas con formato desde el teclado:  formato: cadena de formato de entrada de datos.  dir_i : argumentos a incluir dentro del formato (direcciones de variables donde se almacenarán los valores leídos).

#include <stdio.h> main() { int a,b; float f; scanf("%d %d %f",&a,&b,&f); }

Hay que pasar a la función scanf la dirección de la variable. Esto se logra con el operador &

Funciones de Entrada con formato

¿Por qué tenemos que utilizar el operador &?

El programa necesita saber la dirección de memoria en la que debe ser almacenado el valor que el usuario introduce por teclado.

Si omitimos el operador & el programa intentará almacenar el valor de la variable en una posición de memoria inválida y el programa dejará de funcionar.

¡ATENCIÓN: Este error es un fallo que no detectará el compilador!

#include <stdio.h>

main()

{ int a,b; float f; a=8; scanf("%d %d %f", a , &b, &f); }

ERROR: ¡¡¡El valor introducido por teclado va a ser almacenado en la dirección de memoria 8!!!

Funciones de Entrada con formato

#include <stdio.h>

main()

int a;

float b;

double f;

scanf("%d:%f:%lf", &a , &b, &f);

Por ejemplo, el usuario podría teclear 8:9.1:3.1e

Si en la cadena de formato se incluyen otros caracteres además de los especificadores de formato y el espacio en blanco, esos caracteres extra deben también ser introducidos por el usuario desde el teclado para que la lectura sea correcta

¡¡Nótese el uso de lf como especificador para el double!!

scanf recoge datos hasta que encuentra un espacio en blanco o un retorno de carro

Funciones de Entrada con formato

#include <stdio.h> main() { char cadena[80]; printf("Introduzca una cadena de caracteres:\n"); scanf("%s",cadena); }

Un ejemplo sería: Introduzca una cadena de caracteres: texto

El identificador de una cadena de caracteres almacena la dirección del primer caracter de la misma. Por ello, no debe ponerse &

scanf agrega el carácter '\0' al final

't' 'e' 'x'

'o' '\0'

80 char

cadena

‘t'

Funciones de E/S de caracteres

  • putchar() -> Manda un carácter a la pantalla
#include <stdio.h>
main()
putchar('A');
putchar(66);
putchar('\n');

Saca por pantalla A

Saca por pantalla B

(código ASCII B: 66)

Saca por pantalla cambio

de línea

Funciones de E/S de caracteres

  • getchar() -> Recoge un carácter del buffer del teclado
#include <stdio.h>
main()
char c;
c=getchar();

El usuario teclea cuando quiere.

Buffer del S.O.

'a'

'l'

'o'

'H'

Lee desde el buffer el carácter que corresponde ('H').

Funciones de E/S de caracteres

  • fflush(stdin) -> Limpia el buffer del teclado
#include <stdio.h>
main()
char c;
fflush(stdin);
c=getchar();

Buffer del S.O.

's'

Se queda en espera de nuevo carácter. Lee carácter fresco desde el teclado.

Funciones de E/S de cadenas de caracteres

  • gets -> Lee una cadena de caracteres desde teclado
  • puts -> Presenta una cadena de caracteres en el teclado

#include <stdio.h> main() { char cadena[100]; /* variable cadena de caracteres / gets(cadena); / recoge la cadena de teclado / puts(cadena); / escribe la cadena en pantalla / puts("Hola"); / escribe la cadena Hola en pantalla / puts(gets(cadena)); / escribe lo leído */ }

Lee una línea hasta que el usuario teclea carácter de nueva línea '\n' (Intro)