Se puede acceder a una función de entrada/salida de datos desde cualquier parte de un programa con simplemente escribir el nombre de la función, seguido de una lista de argumentos entre paréntesis. Los argumentos representan los datos que le son enviados a la función. Algunas funciones de entrada/salida no requieren argumentos, pero deben aparecer los paréntesis vacíos.
La mayoría de las versiones de C incluyen una colección de archivos de cabecera que proporcionan la información necesaria para las distintas funciones de biblioteca. Cada archivo contiene generalmente la información necesaria para la utilización de un determinado grupo de funciones de biblioteca.
Estos archivos se incluyen en un programa mediante la instrucción #include al comienzo del programa. Como norma general, el archivo de cabecera requerido para la entrada/salida estándar se llama stdio .h
La biblioteca ‘stdio.h’ contiene diversas funciones, tanto para imprimir en la salida estándar (monitor) como para leer de la entrada estándar (teclado).
Se pueden escribir datos en el dispositivo de salida estándar, utilizando la función de biblioteca printf.
En términos generales, la función printf se escribe:
printf(cadena de control, argl, arg2, argn)
En donde cadena de control hace referencia a una cadena de caracteres que contiene información sobre el formato de la salida y argl, arg2, … , argn son argumentos que representan los datos de salida.
Los argumentos pueden ser constantes, variables simples o nombres de arreglos o expresiones más complicadas.
En la cadena de control se incluyen grupos individuales de caracteres, con un grupo de caracteres por cada dato.
Cada grupo de caracteres debe comenzar con el signo de porcentaje (%).
En su forma más sencilla, un grupo de caracteres estará formado por el signo de porcentaje, seguido de un carácter de conversión que indica el tipo de dato correspondiente.
Dentro de la cadena de control, los diferentes grupos de caracteres pueden estar seguidos o pueden estar separados por caracteres de espaciado (espacios en blanco, tabuladores o caracteres de nueva línea).
| Carácter de conversión | Significado |
| c | El dato es visualizado como un carácter |
| d | El dato es visualizado como un entero decimal con signo |
| e | El dato es visualizado como un valor en coma flotante con exponente |
| f | El dato es visualizado como un valor en coma flotante sin exponente |
| g | El dato es visualizado como un valor en coma flotante utilizando la conversión tipo e o tipo f según sea el caso. No se visualiza no los ceros finales ni el punto decimal cuando no es necesario |
| i | El dato es visualizado como un entero con signo |
| o | El dato es visualizado como un entero octal, sin el cero inicial |
| s | El dato es visualizado como una cadena de caracteres |
| u | El dato es visualizado como un entero decimal sin signo |
| x | El dato es visualizado como un entero hexadecimal sin el prefijo 0x |
Caracteres de conversión de los datos de salida de uso común [tabla], basada en Gottfried, 1997, Programación en C (p. 102).

Para imprimir con formato también se utilizan algunas secuencias de caracteres de escape. C maneja los siguientes:

Se pueden leer datos desde el dispositivo de entrada estándar, utilizando la función de biblioteca scanf.
La función scanf se puede utilizar para introducir cualquier combinación de valores numéricos, caracteres individuales y cadenas de caracteres. Es análoga a la función printf, con la diferencia de que su propósito es introducir datos en lugar de visualizarlos.
En términos generales, la función se escribe:

Donde cadena de control hace referencia a una cadena de caracteres que contiene cierta información sobre el formato de los datos y argl,arg2,…, argn son argumentos que representan los datos.
| Carácter de conversión | Significado |
| c | El dato es un carácter |
| d | El dato es un entero decimal |
| e | El dato es un valor en coma flotante |
| f | El dato es un valor en coma flotante |
| g | El dato es un valor en coma flotante |
| h | El dato es un entero corto |
| i | El dato es un entero decimal, octal o hexadecimal |
| o | El dato es un entero octal |
| s | El dato es una cadena de caracteres seguida de un carácter de espaciado (se añade automáticamente el carácter nulo \0 al final) |
| u | El dato es un entero sin signo |
| x | El dato es un entero hexadecimal |
Caracteres de conversión de los datos de entrada de uso común [tabla], basada en Gottfried, 1997, Programación en C (p. 92).
Los argumentos pueden ser variables o arreglos y sus tipos deben coincidir con los indicados por los grupos de caracteres correspondientes en la cadena de control. Cada nombre de variable debe ser precedido por un ampersand( & ); sin embargo, los nombres de arreglos (se verán en lecciones posteriores) no deben ir precedidos por el ampersand.


