Vamos a ver este programa que ilustra el tratamiento de cadenas de caracteres en Lenguaje C. Cada instrucción
lleva un ejemplo.
/* Programa que ilustra el manejo de cadenas, con un
ejemplo de cada sentencia */
/* http://www.pro-gramas.com */
#include <stdio.h>
#include <string.h>
#define salto printf("\n");
main()
{
int p;
char cadena[1000]="",nombre[8]="Manolo",*c;
gets(cadena); /* Lee una cadena */ salto;
puts(cadena); /* Escribe la cadena */ salto;
strcat(cadena,nombre); /* Copia nombre al final de cadena */
puts(cadena);
strncat(cadena,nombre,3); /* Copia 3 caracteres de nombre al final de cadena */
puts(cadena); salto;
strcpy(cadena,"Hola, amiguitos");
puts(cadena);
strncpy(cadena,"Hola mundo",8);
puts(cadena); salto;
c=strtok(cadena,"sin");
if(c) puts(c);
printf("%d\n",strlen(cadena)); salto;
strcpy(cadena,"Manola"); /* Compara dos cadenas y devuelve un entero */
p=strcmp(cadena,nombre); /* El valor del entero indica cual es mayor */
getchar();
if (p<0) puts("cadena es menor que nombre");
else if (p>0) puts("cadena es mayor que nombre");
else if (!p) puts("Son iguales");
salto;
strcpy(cadena,"Manola"); /* Compara a las dos cadenas 5 caracteres */
p=strncmp(cadena,nombre,5); /* Lo demas es similar a lo anterior */
if (p<0) puts("cadena es menor que nombre");
else if (p>0) puts("cadena es mayor que nombre");
else if (!p) puts("Son iguales");
salto;
/* Compara las cadenas hasta el caracter que difieren */
p=strspn(cadena,nombre);
printf("Cadena y nombre difieren en el caracter %d\n",p);
/* Compra las cadenas hasta encontrar un caracter igual */
strcpy(cadena,"Veo y subo");
p=strcspn(cadena,nombre);
printf("El primer caracter que coinciden es el %d\n",++p);
c=strpbrk(cadena,nombre); /* Encuentra un caracter comun */
printf("%s\n",c); salto;
/* Devuelve un puntero a la primera 'd' en cadena */
strcpy(cadena,"En un lugar de la mancha...");
c=strchr(cadena,'d');
p=c-cadena;
printf("La primera -d- esta en la posicion %d\n",p);
printf("%s\n",c); salto;
/* Devuelve un puntero a la ultima 'n' en cadena */
c=strrchr(cadena,'n');
p=c-cadena;
printf("La ultima -n- esta en la posicion %d\n",p);
printf("%s\n",c); salto;
/* Devuelve el puntero a la primera ocurrencia de nombre en cadena */
c=strstr(cadena,"lugar");
printf("%s\n",c); salto;
/* Cuando una sentencia no ha funcionado devuelve null */
c=strstr(cadena,nombre);
printf("%s\n",c); salto;
getchar();
printf("***************************************************\n");
printf("***************************************************\n");
printf("***************************************************\n\n\n");
}