Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Cadenas en C hechas fáciles: Declaración, entrada, salida y funciones de biblioteca

¿Qué es una cadena en C?

Una cadena en C es una secuencia contigua de caracteres terminada por el carácter nulo (\0). Aunque el lenguaje no tiene un tipo de cadena dedicado, una cadena se representa usualmente como un array de valores char. El compilador añade automáticamente el terminador nulo cuando inicializas un literal de cadena.

"¡Bienvenido al mundo de la programación!" 
<string.h> ofrece una gran cantidad de funciones para manipular cadenas eficientemente.

Declaración e inicialización de cadenas

Puesto que C trata una cadena como un array de caracteres, debes especificar el tamaño del array. El tamaño define el número máximo de caracteres (excluyendo el terminador nulo) que se pueden almacenar.

char nombre_variable_cadena[tamaño_array]; 

Declaraciones típicas:

char primer_nombre[15]; /* almacena hasta 14 caracteres + \0 */ char apellido[15]; 

Cuando proporcionas un inicializador, el compilador cuenta los caracteres y añade automáticamente el terminador nulo. El tamaño del array puede omitirse si das un inicializador.

char primer_nombre[15] = "ANTONIO"; char primer_nombre[] = "NATHAN"; /* tamaño inferido */ char cadena3[6] = {'h','o','l','a','\0'}; /* terminador explícito */ 

Lectura de cadenas desde el usuario

Las funciones de entrada varían en seguridad y comportamiento:

  • scanf("%s", nombre) lee hasta espacio en blanco pero es vulnerable a desbordamiento de búfer.
  • gets() lee una línea completa pero es insegura y eliminada en C11.
  • fgets(nombre, tamaño, stdin) lee hasta tamaño-1 caracteres, dejando espacio para el terminador nulo.

Ejemplo usando fgets:

#include <stdio.h> int main() { char nombre[50]; printf("Ingrese su nombre completo: "); fgets(nombre, sizeof(nombre), stdin); printf("Su nombre es %s", nombre); return 0; } 

Impresión de cadenas

La forma clásica de mostrar una cadena es printf("%s", nombre);. Dos alternativas convenientes son:

  • fputs(nombre, stdout) – escribe directamente en el flujo de salida.
  • puts(nombre) – escribe la cadena seguida de una nueva línea.

Ejemplo con puts:

#include <stdio.h> int main() { char saludo[] = "¡Hola, mundo!"; puts(saludo); return 0; } 

La biblioteca de cadenas (<string.h>)

Funciones comúnmente usadas:

FunciónDescripción
strlenDevuelve la longitud de una cadena (excluyendo el terminador nulo).
strcatAnexa una cadena a otra.
strcmpCompara dos cadenas lexicográficamente.
strcpyCopia una cadena.
strncmpCompara hasta n caracteres.
strncpyCopia hasta n caracteres.
strchrEncuentra la primera ocurrencia de un carácter.
strrchrEncuentra la última ocurrencia de un carácter.
strstrEncuentra una subcadena.
strncatConcatena hasta n caracteres.
strlwrConvierte a minúsculas (no estándar).
struprConvierte a mayúsculas (no estándar).
strrevInvierte una cadena (no estándar).

Programa ilustrativo:

#include <stdio.h> #include <string.h> int main() { char str1[20] = "Hola"; char str2[20] = " Mundo!"; char resultado[40]; /* Comparación */ if (strcmp(str1, str2) == 0) puts("Las cadenas son iguales"); else puts("Las cadenas no son iguales"); /* Concatenación */ strcat(str1, str2); // str1 ahora contiene "Hola Mundo!" printf("Concatenada: %s\n", str1); /* Longitud */ printf("Longitud de str1: %zu\n", strlen(str1)); /* Copia */ strcpy(resultado, str1); printf("Cadena copiada: %s\n", resultado); return 0; } 

Conversión de cadena a número

Conversiones estándar:

  • atoi – convierte a int.
  • atof – convierte a double.
  • atol – convierte a long.

Ejemplo con atoi:

#include <stdio.h> #include <stdlib.h> int main() { char numero_str[20]; printf("Ingrese un número: "); fgets(numero_str, sizeof(numero_str), stdin); int num = atoi(numero_str); printf("Ingresaste %d\n", num); return 0; } 

Conclusiones clave

  • Una cadena es una secuencia de caracteres almacenada en un array char terminada por \0.
  • Declara el tamaño del array antes de usarlo, o deja que el compilador lo infiera al inicializar.
  • Usa fgets para entrada segura; evita gets y scanf("%s") sin verificación de límites.
  • Aprovecha <string.h> para operaciones robustas con cadenas.
  • Convierte números en cadena con atoi, atof o atol para evitar errores en tiempo de ejecución.
  • Recuerda que los literales de cadena son de solo lectura; modificarlos conduce a comportamiento indefinido.

Lenguaje C

  1. Arrays en C++: Declaración, inicialización y técnicas con punteros
  2. Dominando funciones de cadena en C++: strcpy, strcat, strlen, strcmp – Ejemplos prácticos
  3. Uso de realloc() en C: Sintaxis, mejores prácticas y ejemplo
  4. Dominando la función free() en C: Guía práctica y ejemplo
  5. Cadenas en C#: Mejores prácticas y consejos
  6. Creación de listas de cadenas en VHDL: Buenas prácticas y ejemplo
  7. Domine las Operaciones de Strings en Python: Replace, Join, Split, Reverse y Conversión de Mayúsculas/Minúsculas
  8. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  9. Dominando representaciones String en Enums de Java
  10. Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
  11. Clase String en Java: Dominando Creación y Manipulación de Cadenas