Cadenas terminadas en cero en C
Este pequeño artículo discutirá el uso de cadenas en lenguaje C. Las cadenas en lenguaje C se forman utilizando matrices de caracteres.
Cuerdas en C
En realidad, las cadenas son una matriz unidimensional de caracteres que se cierran con el carácter nulo \0
. Los caracteres que componen la cadena van seguidos de un valor nulo para formar una cadena con una terminación nula.
El siguiente fragmento de código crea una cadena con el carácter nulo al final. Para colocar el carácter nulo al final, debemos mantener la longitud de la cadena un carácter mayor que el recuento de palabras original de la cadena.
char test[5] = {'T', 'e', 's', 't', '\0'};
Esta es una forma de inicializar la cadena en C. Tenga en cuenta que el tamaño de la cadena se establece en 5, pero el número de caracteres en las cadenas es 4 y el quinto carácter es el carácter nulo \0
.
También puede inicializar una cadena como en el siguiente segmento de código.
char test[] = "Test";
Por lo tanto, no es obligatorio colocar el carácter nulo al final de la cadena. El compilador de C lo hace por nosotros automáticamente.
El carácter nulo de terminación no se imprimirá cuando imprimamos ambas cadenas. Veamos el ejemplo a continuación.
#include <stdio.h>
int main() {
char test[5] = {'T', 'e', 's', 't', '\0'};
char test2[] = "Test";
printf("Test message: %s\n", test);
printf("Test message 2: %s\n", test2);
}
Hemos creado dos cadenas en el segmento de código anterior y las inicializamos con los mismos datos. Colocamos explícitamente un carácter nulo al final del primero.
Al mismo tiempo, no se coloca en el segundo. Cuando imprimamos estas cadenas, ambas tendrán los mismos datos.
Producción:
Funciones de la biblioteca C-Strings en C
Muchas funciones son compatibles con C para cadenas terminadas en nulo. Se proporcionan numerosas funciones en la clase cadena
; algunos son los siguientes.
No | Funciones | Descripción |
---|---|---|
1 | strcpy(str1, str2); |
Copia str1 en str2. |
2 | strcat(str1, str2); |
Une str2 y str1 de manera que str1 es seguido por str2 |
3 | strlen(str1); |
Indica la longitud de str1. |
4 | strcmp(str1, str2); |
Tiene tres resultados: 1 si str1 y str2 son iguales; negativo si str1 < str2; positivo si str1> str2 |
5 | strchr(str1, c); |
Devuelve una referencia a la primera aparición de c en str1 |
6 | strstr(str1, str2); |
Devuelve una referencia a la primera aparición de str2 en str1 |
El siguiente ejemplo usa algunas de estas funciones para demostrar el uso de cadenas en C.
#include <stdio.h>
#include <string.h>
int main() {
char mystr1[12] = "First";
char mystr2[12] = "Second";
char mystr3[12];
int length;
/* copy the first string into the third */
strcpy(mystr3, mystr1);
printf("strcpy( mystr3, mystr1) : %s\n", mystr3);
/* concatenates first and second */
strcat(mystr1, mystr2);
printf("strcat( mystr1, mystr2): %s\n", mystr1);
/* length of the first string after concatenation */
length = strlen(mystr1);
printf("strlen(mystr1) : %d\n", length);
return 0;
}
Producción: