C en español: curso, seguridad y ejemplos

← Más ejemplos de código: Java, Python, C#, PHP, C…

El lenguaje C es el de los núcleos de Linux y Windows, de SQLite, Git, curl, el intérprete de Python y el firmware de millones de aparatos, y sigue segundo en el índice TIOBE de octubre de 2026. Aquí tienes un curso desde cero con C23 y GCC 15, una guía de los fallos de seguridad que más se repiten y de cómo detectarlos, los estándares y parches que hay que conocer, sus rarezas, un test y ejemplos para tareas concretas. Todo el código se compiló y se ejecutó antes de publicarse.

Curso · 8 leccionesAprende C desde cero, en españolDel primer gcc hola.c a un proyecto con pruebas: tipos y desbordamientos, control y funciones, arrays y cadenas, punteros, struct y memoria dinámica, archivos y make. Con esquemas, retos y el aviso real del compilador o del sanitizador en cada error.Ir al curso →

Seguridad: lo que no puede faltar

C da acceso directo a la memoria y casi no comprueba nada al ejecutar: por eso tantos fallos de seguridad famosos están en programas escritos en C. Casi todos se repiten, y casi todos los detectan herramientas gratuitas que vienen con GCC y Clang. Cada lección del curso tiene su recuadro «Ojo con la seguridad», y estas dos páginas lo reúnen todo.

Seguridad · 16 fallosLos fallos de seguridad típicos de C y cómo evitarlosDesbordamientos de búfer, lecturas fuera de límites, uso tras liberar, enteros que se desbordan, cadenas de formato, inyección de órdenes y señales: cada uno con cómo lo detectan el compilador y los sanitizadores, y la forma segura.Ver los fallos → Estándares y parchesDe K&R a C23, y cómo mantener C al díaQué trajo cada estándar, qué usa tu compilador, las opciones que endurecen un ejecutable y siete fallos reales, del gusano de Morris a Heartbleed, regreSSHion y la puerta trasera de xz.Ver los estándares →

Practica y ponte a prueba

RarezasComportamiento indefinido y otras sorpresas de Ca[i] es lo mismo que i[a], -1 no es menor que sizeof(int), macros que calculan mal y comprobaciones que el optimizador borra.Ver las rarezas → Test · 24 preguntas¿Qué imprime este código?24 preguntas sobre el curso, con fragmentos de C: decide qué escriben. Con la nota, los aciertos por lección y la salida real de GCC 15 en cada respuesta.Hacer el test →

Los ejemplos son programas de un solo archivo que se compilan con gcc -Wall -Wextra programa.c -o programa. Usan C23, así que hace falta GCC 15 o Clang 19 con -std=c23; los que usan funciones de POSIX (procesos, hilos, getline) funcionan en Linux y macOS.

Archivos y texto

Estructuras de datos y algoritmos

  • Ordenar y buscarqsort con números y estructuras, la comparación que no se desborda y bsearch.
  • Una lista enlazadaInsertar, borrar, invertir y liberar sin fugas, con el truco del puntero a puntero.
  • Pila y colaComprobar paréntesis con una pila y una cola con búfer circular, sobre un array.
  • Números aleatoriosrand y srand, un rango sin sesgo, mezclar con Fisher-Yates y arc4random para secretos.

El sistema: argumentos, entorno, procesos e hilos

Todo el código se compiló con GCC 15.3 (C23, -Wall -Wextra) y glibc 2.41 en un contenedor limpio antes de publicarse; las salidas, los avisos del compilador y los informes de los sanitizadores que aparecen están copiados de esa ejecución. ¿Buscas C++? Está en Ejemplos de C++.