Lectura de caracteres
getchar y putchar
Lectura de caracteres es una lección gratuita de C Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.
Leer caracteres individuales
C proporciona getchar() para leer un carácter cada vez desde la entrada estándar, y putchar() para escribir un carácter en la salida estándar.
Ambas funciones se encuentran en <stdio.h>.
#include <stdio.h>
int main(void) {
putchar('H');
putchar('i');
putchar('\n');
return 0;
}Conceptos básicos de putchar
putchar(c) escribe el carácter c y devuelve el carácter escrito, o EOF si se produce un error.
Es la forma más sencilla de mostrar un solo byte.
#include <stdio.h>
int main(void) {
for (char c = 'A'; c <= 'E'; c++) {
putchar(c);
}
putchar('\n');
return 0;
}getchar devuelve int
getchar() devuelve un int, no un char. Esto es importante porque debe poder devolver EOF, un valor distinto de cualquier carácter real.
Almacene siempre el resultado en un int.
#include <stdio.h>
int main(void) {
int c = 'A';
printf("Stored value: %d\n", c);
return 0;
}Qué es EOF
EOF significa End Of File, es decir, fin de archivo. getchar() lo devuelve cuando no queda más entrada.
Normalmente es el valor -1, por lo que getchar usa int para que no se confunda con el byte 255.
#include <stdio.h>
int main(void) {
printf("EOF has value %d\n", EOF);
return 0;
}El patrón del bucle de lectura
El patrón clásico lee caracteres hasta encontrar EOF. Como aquí no hay entrada interactiva, el bucle termina inmediatamente, pero esta es su estructura estándar.
- Asigne el valor dentro de la condición.
- Compárelo con
EOF.
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
printf("Reached end of input\n");
return 0;
}Contar caracteres
Una tarea habitual es contar cuántos caracteres se han leído. Incremente un contador dentro del bucle de lectura.
#include <stdio.h>
int main(void) {
int c;
long count = 0;
while ((c = getchar()) != EOF) {
count++;
}
printf("Read %ld characters\n", count);
return 0;
}Mostrar en mayúsculas
Puede transformar cada carácter antes de escribirlo. Aquí, cada carácter leído se convierte a mayúscula mediante toupper.
#include <stdio.h>
#include <ctype.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(toupper(c));
}
return 0;
}Contar líneas
Contar los caracteres de salto de línea indica cuántas líneas se han leído. Compruebe cada carácter comparándolo con '\n'.
#include <stdio.h>
int main(void) {
int c;
int lines = 0;
while ((c = getchar()) != EOF) {
if (c == '\n') lines++;
}
printf("Lines: %d\n", lines);
return 0;
}Devolver un carácter a la entrada
ungetc(c, stdin) devuelve un carácter al flujo de entrada, de modo que la siguiente lectura lo vuelve a recibir.
Resulta útil cuando lee un carácter de más al realizar un análisis.
#include <stdio.h>
int main(void) {
ungetc('X', stdin);
int c = getchar();
printf("Got back: %c\n", c);
return 0;
}getchar frente a scanf
getchar le proporciona un control preciso a nivel de byte, mientras que scanf analiza entradas con formato.
Para procesar caracteres individualmente, como en filtros y tokenizadores, getchar es la herramienta adecuada.
#include <stdio.h>
int main(void) {
int c = '5';
if (c >= '0' && c <= '9') {
printf("It is a digit: %c\n", c);
}
return 0;
}Estructura básica de un filtro
Los filtros leen de la entrada, transforman los datos y escriben en la salida. Esta estructura básica elimina todos los espacios del flujo de entrada.
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
if (c != ' ') {
putchar(c);
}
}
return 0;
}Comprobación rápida
Ponga a prueba su comprensión de la lectura de caracteres.
Resumen
Ha aprendido a leer y escribir caracteres:
getchar()lee un carácter y devuelve unint.putchar(c)escribe un carácter.EOFindica el final de la entrada; use el buclewhile ((c = getchar()) != EOF).ungetcpuede devolver un carácter al flujo.
Aprende C con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 144
Preguntas frecuentes
¿La lección «Lectura de caracteres» es gratis?
Sí — el texto completo de «Lectura de caracteres» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Lectura de caracteres»?
getchar y putchar Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C Academy?
No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Lectura de caracteres»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C Academy?
Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Caracteres como enteros
- La biblioteca ctype
- Lectura de caracteres
- Creación de utilidades para caracteres