Conceptos básicos de E / S en C

Cómo realizar entrada / salida usando printf y scanf en C

C es un lenguaje pequeño y el "núcleo" deCno incluye ninguna funcionalidad de entrada / salida (E / S).

Esto no es algo exclusivo de C, por supuesto. Es común que el núcleo del lenguaje sea independiente de la E / S.

En el caso de C, la biblioteca estándar de C nos proporciona la entrada / salida a través de un conjunto de funciones definidas en elstdio.harchivo de cabecera.

Puede importar esta biblioteca usando:

#include <stdio.h>

encima de su archivo C.

Esta biblioteca nos proporciona, entre muchas otras funciones:

  • printf()
  • scanf()
  • sscanf()
  • fgets()
  • fprintf()

Antes de describir lo que hacen esas funciones, quiero tomarme un minuto para hablar sobreFlujos de E / S.

Tenemos 3 tipos de flujos de E / S en C:

  • stdin(entrada estándar)
  • stdout(salida estándar)
  • stderr(Error estándar)

Con las funciones de E / S siempre trabajamos con flujos. Una secuencia es una interfaz de alto nivel que puede representar un dispositivo o un archivo. Desde el punto de vista de C, no tenemos ninguna diferencia en la lectura de un archivo o en la lectura de la línea de comandos: es un flujo de E / S en cualquier caso.

Eso es algo a tener en cuenta.

Algunas funciones están diseñadas para trabajar con una secuencia específica, comoprintf(), que usamos para imprimir caracteres enstdout. Usando su contraparte más generalfprintf(), podemos especificar la secuencia en la que escribir.

Desde que comencé a hablar deprintf(), vamos a presentarlo ahora.

printf()

printf()es una de las primeras funciones que utilizará cuando aprenda a programar en C.

En su forma de uso más simple, le pasa un literal de cadena:

printf("hey!");

y el programa imprimirá el contenido de la cadena en la pantalla.

Puede imprimir el valor de una variable y es un poco complicado porque necesita agregar un carácter especial, un marcador de posición, que cambia según el tipo de variable. Por ejemplo usamos%dpara un dígito entero decimal con signo:

int age = 37;

printf(“My age is %d”, age);

Podemos imprimir más de una variable usando comas:

int age_yesterday = 36;
int age_today = 37;

printf(“Yesterday my age was %d and today is %d”, age_yesterday, age_today);

Hay otros especificadores de formato como%d:

  • %cpor un char
  • %spor una cuerda
  • %fpara números de coma flotante
  • %ppara punteros

y muchos más.

Podemos usar caracteres de escape enprintf(), me gusta\nque podemos usar para hacer que la salida cree una nueva línea.

scanf()

printf()se utiliza como función de salida. Quiero introducir una función de entrada ahora, por lo que podemos decir que podemos hacer todo lo de E / S:scanf().

Esta función se utiliza para obtener un valor del usuario que ejecuta el programa, desde la línea de comandos.

Primero debemos definir una variable que contendrá el valor que obtenemos de la entrada:

int age;

Entonces llamamosscanf()con 2 argumentos: el formato (tipo) de la variable y la dirección de la variable:

scanf("%d", &age);

Si queremos obtener una cadena como entrada, recuerde que un nombre de cadena es un puntero al primer carácter, por lo que no necesita la&personaje antes que él:

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

Aquí hay un pequeño programa que usa ambosprintf()yscanf():

#include <stdio.h>

int main(void) {
  char name[20];
  printf("Enter your name: ");
  scanf("%s", name);
  printf("you entered %s", name);
}

Descarga mi gratisManual de C


Más tutoriales de clang: