C - Cuerdas
Las cadenas son en realidad una matriz unidimensional de caracteres terminados por un nullcarácter '\ 0'. Por tanto, una cadena terminada en nulo contiene los caracteres que componen la cadena seguida de unnull.
La siguiente declaración e inicialización crean una cadena que consta de la palabra "Hola". Para contener el carácter nulo al final de la matriz, el tamaño de la matriz de caracteres que contiene la cadena es uno más que el número de caracteres de la palabra "Hola".
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Si sigue la regla de inicialización de la matriz, puede escribir la declaración anterior de la siguiente manera:
char greeting[] = "Hello";
A continuación se muestra la presentación en memoria de la cadena definida anteriormente en C / C ++ -
En realidad, no coloca el carácter nulo al final de una constante de cadena. El compilador de C coloca automáticamente el '\ 0' al final de la cadena cuando inicializa la matriz. Intentemos imprimir la cadena mencionada anteriormente -
#include <stdio.h>
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Greeting message: %s\n", greeting );
return 0;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Greeting message: Hello
C admite una amplia gama de funciones que manipulan cadenas terminadas en nulo:
No Señor. | Función y propósito |
---|---|
1 | strcpy(s1, s2); Copia la cadena s2 en la cadena s1. |
2 | strcat(s1, s2); Concatena la cadena s2 al final de la cadena s1. |
3 | strlen(s1); Devuelve la longitud de la cadena s1. |
4 | strcmp(s1, s2); Devuelve 0 si s1 y s2 son iguales; menor que 0 si s1 <s2; mayor que 0 si s1> s2. |
5 | strchr(s1, ch); Devuelve un puntero a la primera aparición del carácter ch en la cadena s1. |
6 | strstr(s1, s2); Devuelve un puntero a la primera aparición de la cadena s2 en la cadena s1. |
El siguiente ejemplo utiliza algunas de las funciones mencionadas anteriormente:
#include <stdio.h>
#include <string.h>
int main () {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len ;
/* copy str1 into str3 */
strcpy(str3, str1);
printf("strcpy( str3, str1) : %s\n", str3 );
/* concatenates str1 and str2 */
strcat( str1, str2);
printf("strcat( str1, str2): %s\n", str1 );
/* total lenghth of str1 after concatenation */
len = strlen(str1);
printf("strlen(str1) : %d\n", len );
return 0;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10