PALABRAS
RESERVADAS Y
FUNCIONES DE
CADENAS DE
CARACTERES
EQUIPO 2:
Castillo Velázquez Leticia Itzel
Kushida Arias Hana Cristina
Mata Soto Sol de Cielo
Montealegre Daniel Jesús
FUNCIONES DE CADENAS DE
CARACTERES
Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el
carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en
posiciones consecutivas de memoria.
La manera de definir una cadena es la siguiente:
char <identificador> [<longitud máxima>];
char Saludo[5]; char Saludo[5];
char Saludo[5] = "HOLA";
Saludo[0] = 'H';
Saludo[1] = 'O';
Saludo[2] = 'L';
Saludo[3] = 'A';
Saludo[4] = 0;
string.h
El objeto String se utiliza para representar y manipular una secuencia de caracteres.
La biblioteca <string.h> contiene un conjunto de funciones para manipular cadenas: copiar,
cambiar caracteres, comparar cadenas, etc.
Las funciones más elementales son:
• strcpy ( c1, c2 ); Copia c2 en c1
• strcat ( c1, c2 ); Añade c2 al final de c1
• int strlen ( cadena ); Devuelve la longitud de la cadena
• int strcmp ( c1, c2 ); Devuelve cero si c1 es igual a c2; no-cero en caso contrario
#include <string.h>
#include<stdio.h>
#include<string.h>
strcpy int main()
{
La función strcpy se encuentra en la char texto1[]="corta";
biblioteca <string.h> y se utiliza para char texto2[]="mediana";
copiar una cadena de caracteres (fuente)
char texto3[]="larguisima";
en el lugar que ocupaba otra (destino).
Esta copia es destructiva, o sea, que
todos los caracteres que estaban en la strcpy(texto2,texto1);
cadena destino desaparecen, aunque la printf("%s\n",texto2);
cadena destino fuera más larga que la strcpy(texto2,texto3);
cadena fuente. La cadena destino se printf("%s\n",texto2);
pone como primer argumento de la getch();
función y la cadena fuente como
return 0;
segundo. }
#include<stdio.h>
strcat #include<string.h>
int main()
En el programa anterior vimos que la {
función strcpy es desctructiva, pero hay char texto1[]="Don Pepito";
otra función en la librería <string.h> que char texto2[]=" y ";
copia una cadena (fuente) en otra
char texto3[]="Don Jose";
(destino) sin destruir ésta, es decir, que
copia una cadena detrás de la otra. printf("%s\n",texto1);
strcat(texto1,texto2);
printf("%s\n",texto2);
strcat(texto1,texto3);
printf("%s\n",texto2);
getchar();
return 0;
}
#include <stdio.h>
#include <string.h>
strlen #include <conio.h>
#define MAXLON 80
int main(void)
{
char a[MAXLON+1];
Esta función devuelve el total
int longitud;
(entero) de caracteres que
conforman una cadena (excluyendo clrscr();
el caracter nulo \0). printf ("Introduce una cadena (max. %d
caracteres): ", MAXLON);
scanf("%s",&a);
longitud = strlen(a);
printf ("\nLongitud de la cadena: %d\n",
longitud);
getch();
return 0;
}
#include <stdio.h>
#include <string.h>
srtcmp int main()
{
char s1[6] = "Abeja";
char s2[6] = "abeja";
La función strcmp recibe dos cadenas, a y int i;
b, devuelve un entero. El entero que
printf( "s1=%s\t", s1 );
resulta de efectuar la llamada strcmp(a, b)
printf( "s2=%s\n", s2 );
codifica el resultado de la comparación:
i = strcmp( s1, s2 );
• es menor que cero si la cadena a es printf( "s1 es " );
menor que b, if( i < 0 ) printf( "menor que" );
else if( i > 0 ) printf( "mayor que" );
• es 0 si la cadena a es igual que b, y
else printf( "igual a" );
• es mayor que cero si la cadena a es printf( " s2\n" );
mayor que b.
return 0;
Naturalmente, menor significa que va }
delante en orden alfabético, y mayor que
va detrás.
#include<stdio.h>
strstr #include<string.h>
int main()
{
strstr busca la primera ocurrencia de la
char s1[13] = "Hola a todos";
cadena "cad2" en la cadena "cad1". char s2[3] = "la";
Si la encuentra devuelve un puntero que
apunta al primer carácter de la printf("s1=%s\n",s1);
ocurrencia en "cad1", si no lo encuentra printf("s2=%s\n",s2);
devuelve NULL. printf("strstr(s1,s2) =
%s\n", strstr(s1,s2));
char *strstr(const char *s1, const char *s2);
return 0;
}
#include<stdio.h>
strchr y #include<string.h>
strrchr int main()
{
char s[11] = "Hola amigos";
strchr busca la primera ocurrencia del char c = 'a';
carácter contenido en la variable "c",
mientras que strrchr busca la última printf("s=%s\t",s);
ocurrencia. printf("c=%c\n",c);
printf("strrchr=%s\n",
Si lo encuentra devuelve un puntero que
strrchr(s,c));
apunta al carácter encontrado en "cad",
si no lo encuentra devuelve NULL.
return 0;
char *strchr(char *s, int c); }
char *strrchr(char *s, int c);
strupr y strlwr #include<stdio.h>
#include<string.h>
strupr convierte las letras contenidas en
la cadena "cad" en mayúsculas, mientras int main()
que strlwr convierte las letras {
contenidas en minúsculas. char str[ ]="la carne en jugo
es la mejor";
Devuelve un puntero a la cadena "cad". printf("%s\n", strupr (str));
return 0;
char *strupr(char *str); }
char *strlwr(char *str);
strrev #include<stdio.h>
#include<string.h>
Invierte los caracteres contenidos en la int main()
{
cadena "cad".
char str1[] = "abcxyz";
Devuelva una puntero a la cadena "cad". char *ret1 = strrev(str1);
printf("La cadena al reves
es: %s\n", ret1);
char * strrev (char * str);
return 0;
}
ctype.h
No sólo string.h contiene funciones útiles para el tratamiento de cadenas. En ctype.h se encuentran unas
funciones que permiten hacer cómodamente preguntas acerca de los caracteres, como si son mayúsculas,
minúsculas, dígitos, etc:
● isalnum(caracter): devuelve cierto (un entero cualquiera distinto de cero) si caracter es una letra o dígito,
y falso (el valor entero 0) en caso contrario.
● isalpha(caracter): devuelve cierto si caracter es una letra, y falso en caso contrario.
● isblank(caracter): devuelve cierto si caracter es un espacio en blanco o un tabulador.
● isdigit(caracter) devuelve cierto si caracter es un digito, y falso en caso contrario.
● isspace(caracter): devuelve cierto si caracter es un espacio en blanco, un salto de línea, un retorno de
carro, un tabulador, etc., y falso en caso contrario.
● islower(caracter): devuelve cierto si caracter es una letra minúscula, y falso en caso contrario.
● isupper(caracter): devuelve cierto si caracter es una letra mayúscula, y falso en caso contrario.
● toupper(caracter): devuelve la mayúscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.
● tolower(caracter): devuelve la minúscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.