C Cadenas

En el lenguaje C, una cadena es en realidad una matriz unidimensional de caracteres que usa el carácter nulo\0como terminación. Por lo tanto,\0se utiliza para marcar el final de la cadena.

El carácter nulo (Null character) también se llama terminador, abreviadoNUL, es un carácter de control con un valor de00,\0es un carácter de escape, lo que significa que le dice al compilador que no es el carácter0, sino el carácter nulo.

La siguiente declaración e inicialización crea unaEJEMPLOcadena. Dado que el carácter nulo se almacena al final de la matriz,\0el tamaño de la matriz de caracteres es mayor que la palabra enEJEMPLOun carácter.

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

De acuerdo con las reglas de inicialización de matrices, puede escribir la declaración anterior de la siguiente manera:

char site[] = "EJEMPLO";

La siguiente es la representación en memoria de las cadenas definidas en C/C++:

C/C++ 中的字符串表示

De hecho, no es necesario ponernullel carácter al final de la constante de cadena. El compilador de C colocará automáticamente\0al final de la cadena. Intentemos mostrar la cadena anterior:

Ejemplo

#include <stdio.h> int main () { char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; printf("Tutorial de novatos: %s\n", site ); return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Ejemplo: EJEMPLO

En C hay muchas funciones para manipular cadenas:

No.Función y propósito
1strcpy(s1, s2);
Copia la cadena s2 en la cadena s1.
2strcat(s1, s2);
Concatena la cadena s2 al final de la cadena s1.
3strlen(s1);
Devuelve la longitud de la cadena s1.
4strcmp(s1, s2);
Si s1 y s2 son iguales, devuelve 0; si s1 < s2 devuelve un valor menor que 0; si s1 > s2 devuelve un valor mayor que 0.
5strchr(s1, ch);
Devuelve un puntero a la primera aparición del carácter ch en la cadena s1.
6strstr(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 anteriores:

Ejemplo

#include <stdio.h> #include <string.h> int main () { char str1[14] = "ejemplo"; char str2[14] = "google"; char str3[14]; int len ; /*Copiar str1 a str3*/ strcpy(str3, str1); printf("strcpy( str3, str1) : %s\n", str3 ); /*Concatenar str1 y str2*/ strcat( str1, str2); printf("strcat( str1, str2): %s\n", str1 ); /*Longitud total de str1 después de la concatenación*/ len = strlen(str1); printf("strlen(str1) : %d\n", len ); return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

strcpy( str3, str1) :  ejemplo
strcat( str1, str2):   ejemplogoogle
strlen(str1) :  12

Puede encontrar más funciones relacionadas con cadenas en la biblioteca estándar de C.

Otras extensiones