Strings en C: strrev, strcmp y strcat explicados
Clase 9 de 12 • Curso de Funciones en C
Contenido del curso
Manejo de funciones en C
Bibliotecas estándar de funciones
Cierre
Aprende a manipular strings en C con la librería string.h: leer, invertir, comparar y concatenar cadenas de forma clara y práctica. Verás cómo integrar funciones como gets, strrev, strcmp y strcat dentro de if y else para controlar la lógica con precisión.
¿Cómo iniciar con string.h y declarar arrays de chars?
Para trabajar con cadenas en C necesitas incluir stdio.h y string.h. Declara un array de tipo char con el tamaño máximo previsto; cada posición guarda un carácter. Así creas una cadena de caracteres fija, por ejemplo, de 60 posiciones.
#include <stdio.h>
#include <string.h>
int main() {
char string1[60];
printf("Escribe una frase\n");
gets(string1);
// Aquí usaremos funciones de string.h más adelante.
return 0;
}
Puntos clave: - Un array es un conjunto de celdas contiguas para almacenar datos. - En una cadena, cada celda guarda un carácter. - gets captura una línea completa y la coloca en el array destino. - printf con %s imprime un string.
¿Qué hace strrev para invertir un string?
La función strrev invierte el orden de los caracteres de una cadena. Es ideal para comprobar palíndromos como «Anita lava la tina», donde al invertir verás el mismo texto, considerando que los espacios también cuentan.
#include <stdio.h>
#include <string.h>
int main() {
char string1[60];
printf("Escribe una frase\n");
gets(string1);
strrev(string1);
printf("El string al revés es: %s\n", string1);
return 0;
}
Ideas a recordar: - strrev modifica la cadena original in-place. - Los espacios y signos de puntuación también se invierten.
¿Cómo comparar y concatenar strings con strcmp y strcat?
Con strcmp comparas dos cadenas y con strcat puedes unirlas en una sola. Esto permite validar si el usuario ingresó textos idénticos y, si no lo hizo, concatenarlos en un único string.
¿Cómo funciona strcmp en la comparación?
strcmp recibe dos strings y retorna un resultado de comparación. Si te dice que son iguales, retorna 0; si son diferentes, retorna 1. Recuerda: en C la comparación distingue mayúsculas y minúsculas.
#include <stdio.h>
#include <string.h>
char string1[60], string2[60];
int main() {
printf("Escribe una frase\n");
gets(string1);
printf("Escribe otra frase para comparar\n");
gets(string2);
if (strcmp(string1, string2) == 0)
printf("Ingresaste dos strings idénticos\n");
else
printf("Ingresaste dos cosas distintas\n");
return 0;
}
Claves prácticas: - Usa el operador de comparación == para evaluar el retorno de strcmp. - Mayúsculas y minúsculas importan: "Hola" y "hola" son diferentes. - Pasa los strings como argumentos en el orden que quieres comparar.
¿Cómo unir cadenas con strcat cuando son distintas?
strcat concatena la segunda cadena al final de la primera y el resultado queda guardado en la primera. Úsalo dentro del else para construir una cadena única cuando los textos no coinciden.
#include <stdio.h>
#include <string.h>
char string1[60], string2[60];
int main() {
printf("Escribe una frase\n");
gets(string1);
printf("Escribe otra frase para comparar\n");
gets(string2);
if (strcmp(string1, string2) == 0) {
printf("Ingresaste dos strings idénticos\n");
} else {
printf("Ingresaste dos cosas distintas\n");
strcat(string1, string2);
printf("Si las unimos, el resultado es: %s\n", string1);
}
return 0;
}
Buenas prácticas en el flujo: - Combina if y else para decidir entre comparar o concatenar. - Recuerda que strcat no agrega espacios por sí solo; si lo necesitas, inclúyelos tú. - El primer argumento de strcat es el buffer donde quedará el resultado.
¿Tienes otras funciones de string.h que te gusten o quieres mostrar tus resultados? Cuéntalo en los comentarios y prueba tus propios códigos para reforzar lo aprendido.