Las cadenas en C son en realidad arrays de caracteres. Aunque los punteros en C están en un tema explicado más adelante, utilizaremos punteros a un conjunto de caracteres para definir cadenas simples, de la siguiente manera:
char * nombre = "John Smith";
Este método crea una cadena que sólo podemos usar para leer. Si deseamos definir una cadena que pueda ser manipulada, necesitaremos definirla como una matriz de caracteres local:
char nombre[] = "John Smith";
Esta notación es diferente porque asigna una variable de tipo array para que podamos manipularla. La notación de los corchetes vacíos []
le dice al compilador que calcule el tamaño de la matriz automáticamente. De hecho, esto es lo mismo que asignarlo explícitamente, agregando uno a la longitud de la cadena:
char nombre[] = "John Smith"; /* es lo mismo que */ char nombre[11] = "John Smith";
La razón por la que necesitamos añadir uno a la longitud de la cadena, aunque la cadena John Smith
tiene exactamente 10 caracteres, es para indicar la terminación de la cadena mediante un carácter especial (igual a 0) que indica el final de la cadena. El final de la cadena está marcado porque el programa no conoce la longitud de la cadena, únicamente el compilador la conocerá de acuerdo con el código.
Podemos usar el comando printf
para formatear una cadena junto con otras cadenas, de la siguiente manera:
char * nombre = "John Smith"; int edad = 27; /* Imprime 'John Smith tiene 27 años.' */ printf("%s tiene %d años.\n", nombre, edad);
Se debe tener en cuenta que al imprimir cadenas, debemos agregar un carácter de nueva línea (\n
) para que nuestra la declaración printf
se imprima en una nueva línea.
La función 'strlen' devuelve la longitud de la cadena que se debe pasar como argumento:
char * nombre = "Nikhil"; printf("%d\n",strlen(nombre));
La función strncmp
compara dos cadenas, devolviendo el número 0 si son iguales, o un número diferente si son diferentes. Los argumentos son las dos cadenas que se compararán y la longitud máxima de comparación. También hay una versión insegura de esta función llamada strcmp
, pero no se recomienda su uso. Por ejemplo:
char * nombre = "John"; if (strncmp(nombre, "John", 4) == 0) { printf("Hola, John!\n"); } else { printf("Tú no eres John.\n"); }
La función 'strncat' añade los primeros n caracteres de la cadena src a la cadena de destino donde n es min(n, length (src)); Los argumentos que se pasan son: cadena de destino, cadena de origen y n - número máximo de caracteres que se deben anexar. Por ejemplo:
char dest[20]="Hola"; char src[20]="Mundo"; strncat(dest,src,3); printf("%s\n",dest); strncat(dest,src,20); printf("%s\n",dest);
A continuación, definimos la cadena first_name con el valor John utilizando la notación de punteros, y definimoa la cadena last_name con el valor Doe utilizando la notación de array local.