Cadenas en C (con ejemplos)

En este tutorial, aprenderá sobre cadenas en la programación C. Aprenderá a declararlos, inicializarlos y usarlos para varias operaciones de E / S con la ayuda de ejemplos.

En la programación en C, una cadena es una secuencia de caracteres terminada con un carácter nulo . Por ejemplo:

 char c() = "c string"; 

Cuando el compilador encuentra una secuencia de caracteres entre comillas dobles, agrega un carácter nulo al final de forma predeterminada.

¿Cómo declarar una cadena?

Así es como puede declarar cadenas:

 char s(5); 

Aquí, hemos declarado una cadena de 5 caracteres.

¿Cómo inicializar cadenas?

Puede inicializar cadenas de varias formas.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Tomemos otro ejemplo:

 char c(5) = "abcde";

Aquí, estamos tratando de asignar 6 caracteres (el último carácter es '') a una charmatriz que tiene 5 caracteres. Esto es malo y nunca deberías hacer esto.

Asignar valores a cadenas

Las matrices y cadenas son ciudadanos de segunda clase en C; no admiten el operador de asignación una vez que se declara. Por ejemplo,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Nota: use la función strcpy () para copiar la cadena en su lugar.

Leer cadena del usuario

Puede usar la scanf()función para leer una cadena.

La scanf()función lee la secuencia de caracteres hasta que encuentra espacios en blanco (espacio, nueva línea, tabulación, etc.).

Ejemplo 1: scanf () para leer una cadena

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Salida

 Ingrese el nombre: Dennis Ritchie Su nombre es Dennis.

Aunque se ingresó a Dennis Ritchie en el programa anterior, solo "Dennis" se almacenó en la cadena de nombres. Es porque había un espacio después de Dennis.

¿Cómo leer una línea de texto?

Puede usar la fgets()función para leer una línea de cadena. Y puede usar puts()para mostrar la cadena.

Ejemplo 2: fgets () y put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Salida

 Ingrese el nombre: Tom Hanks Nombre: Tom Hanks 

Aquí, hemos utilizado la fgets()función para leer una cadena del usuario.

fgets(name, sizeof(name), stdlin); // read string

El sizeof(name)resultado es 30. Por lo tanto, podemos tomar un máximo de 30 caracteres como entrada, que es el tamaño de la cadena del nombre.

Para imprimir la cadena, hemos utilizado puts(name);.

Nota: La gets()función también puede ser recibir información del usuario. Sin embargo, se elimina del estándar C.
Es porque le gets()permite ingresar cualquier longitud de caracteres. Por tanto, podría producirse un desbordamiento del búfer.

Pasar cadenas a funciones

Las cadenas se pueden pasar a una función de forma similar a las matrices. Obtenga más información sobre cómo pasar matrices a una función.

Ejemplo 3: pasar una cadena a una función

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Cadenas y punteros

De manera similar a las matrices, los nombres de cadenas se "descomponen" en punteros. Por lo tanto, puede usar punteros para manipular elementos de la cadena. Le recomendamos que compruebe las matrices C y los punteros antes de comprobar este ejemplo.

Ejemplo 4: cadenas y punteros

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Funciones de cadena de uso común

  • strlen () : calcula la longitud de una cadena
  • strcpy () - copia una cadena a otra
  • strcmp () - compara dos cadenas
  • strcat () - concatena dos cadenas

Articulos interesantes...