CADENAS DE CARACTERES
ARREGLOS CON CADENAS DE
CARACTERES
• Declaración:
o Se declaran como arreglos unidimensionales (vector).
o Debe contener 1 carácter adicional, que indica el fin de la cadena de
caracteres.
char cadena[6]; 0 1 2 3 4 5
\0
Puede contener hasta Caracter que marca el fin del string
5 caracteres
CADENAS DE CARACTERES
Para asignar a un arreglo de caracteres una cadena de la entrada
estándar se puede usar la función scanf con la opción %s
Nota: que no se requiere usar el operador &
De igual forma para mostrarlo en la salida estándar. ..
Ejemplo:
main()
{
char nombre[15], apellidos[30];
printf("Introduce tu nombre: ");
scanf("%s",nombre);
printf("Introduce tus apellidos: ");
scanf("%s",apellidos);
printf("Usted es %s %s\n",nombre,apellidos);
}
PUNTERO A CADENA DE
CARACTERES
Los punteros se pueden utilizar en lugar de índices de arreglos.
Ejemplo:
char alfabeto [27] = “ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Declaremos ahora p un puntero a char
char *p;
Se establece que P apunta al primer carácter de alfabeto
escribiendo
p = &alfabeto[0]; //o también p = alfabeto;
de modo que si escribe la sentencia
printf("%c \n", *p) ;
se visualiza la letra A, ya que p apunta al primer elemento de la
cadena. Se puede hacer también
p = alfabeto[15];
de modo que p apuntará al carácter 16º (la letra Q).
BIBLIOTECA PARA MANEJO DE
CADENAS DE CARACTERES
El Lenguaje C no tiene operaciones con cadenas, se usan funciones
de la librería ‘string.h’ y se incluye como archivo cabecera con:
#include <string.h>
size_t es un tipo de dato de enteros positivos (unsigned)
strlen(cadena); // retorna la cantidad de caracteres que tiene una cadena
size_t strlen(char *cad)
Ejemplo:
char nombre[30]=“Juan”;
printf("La cantidad de caracteres del nombre %s es %d", nombre,
strlen(nombre));
FUNCIONES STRING.H
strcpy(destino, origen); // Se utiliza para copiar el contenido de una cadena
origen en una cadena destino (sobrescribe).
char * strcpy(char *destino, char *origen)
Ejemplo:
char nombre[30] = "nombre", apellido[30];
strcpy(apellido,nombre);
printf("%s\n",apellido);
strcpy(nombre,“Juan");
printf("%s\n",nombre);
strncpy(destino, origen, cantidad ); // Se adiciona la cantidad de caracteres a
copiar (límite).
char * strncpy(char *destino, char *origen, size_t n)
Ejemplo:
strncpy(nombre,apellido,2);
printf("%s\n",nombre);
FUNCIONES STRING.H
strcat(cadena1, cadena2); // Agrega al final de la cadena1 la cadena2.
char * strcat(char *cadena1, char *cadena2)
Ejemplo:
char nombre[30]=“Juan”;
strcat(nombre,“ Pérez”);
printf("%s\n", nombre);
strncat(cadena1, cadena2,cantidad); // Se adiciona la cantidad de caracteres de
la cadena2 .
char * strncat(char *cadena1, char *cadena2, size_t n)
Ejemplo:
char apellido[30]= “Perez, ”, nombre[30]=“Juan Carlos”;
strncat(apellido, nombre,5);
printf("%s\n", apellido);
FUNCIONES STRING.H
strcmp(cadena1, cadena2); // compara las dos cadenas y retorna un valor entero.
int strcmp(char *cadena1, char *cadena2)
=0 las cadenas son iguales
>0 cadena1 es mayor a cadena2
<0 cadena1 es menor a cadena2
Ejemplo:
char opcion[3];
if ( strcmp(opcion,"si") == 0 ) printf(“la opcion es si”);
strncmp(cadena1, cadena2, cantidad); // compara una cantidad de caracteres de
las dos cadenas .
int strncmp(char *cadena1, char *cadena2, size_t n )
Ejemplo:
char cad1[5]=“hola”, cad2[15]=“hola chicos”; int n=2;
if (!(strncmp(cad1,cad2,n))) printf("Los %d primeros caracteres son iguales\n",n);
FUNCIONES STRING.H
strchr(cadena, letra); // busca el carácter dentro de la cadena de caracteres y retorna un
apuntador al primer carácter que encuentra (letra) o NULL sino lo encontró.
char *strchr(char *cadena, char letra)
Ejemplo:
char cad[15]=“hola alumnos”;
if ((strchr(cad,’l’))!=NULL) printf(“la letra l se encuentra en la cadena”);
printf("\t%s\n",strchr(cad,'a'));
strstr(cadena1, cadena2); // busca la cedena2 dentro de la cadena1 y retorna un
apuntador al primera letra o NULL sino lo encontró.
char *strstr(char *cadena1, char *cadena2)
Ejemplo:
char cad[15]=“hola alumnos”;
if ((strstr(cad,”hola”))!=NULL) printf(“la palabra hola se encuentra en la cadena”);
printf("\t%s\n",strstr(cad,"alumnos"));
FUNCIONES STRING.H
strlwr(cadena); // convierte toda la cadena a minúsculas.
char *strlwr(char *cadena)
strupr(cadena); // convierte toda la cadena a mayúsculas.
char *strupr(char *cadena)
Ejemplo:
char cad[15]=“hola”, cad2[15]=“ALUMNOS”;
printf("%s\n",cad);
printf("%s\n",cad2);
strupr(cad);
strlwr(cad2);
printf("\n%s\n",cad);
printf("%s\n",cad2);
FUNCIONES STDLIB.H
• Funciones para convertir cadenas a números
int *atoi(char *cadena)
long *atol(char *cadena)
double *atof(char *cadena)
Ejemplo:
char cad1[6]="325", cad2[10]="123456789", cad3[6]="9.55";
int entero; long enteroLargo; double real;
printf("cadena 1: %s\n cadena 2: %s\n cadena 3: %s\n ", cad1,cad2,cad3);
entero= atoi(cad1);
enteroLargo = atol(cad2);
real = atof(cad3);
printf(" numero 1: %d\n numero 2: %ld\n numero 3: %.2f\n ", entero,
enteroLargo, real);
EJERCICIOS
1. Escribir un programa que pida tres cadenas al
usuario y muestre la longitud de cada una.
2. Desarrollar un programa que pida dos cadenas al
usuario e indique cual es la cadena menor.
3. Realizar un programa que permita ingresar una
cadena de caracteres e informe cuántas vocales
contiene esa cadena.
4. En una ciudad se realiza una encuesta. A cada
persona se le realiza una pregunta, la respuesta
puede ser “si”, “no” o una abstención. Realizar un
algoritmo que informe cuántas personas votaron
por “si”, cuántas por “no”, cuántas abstenciones
hubo y en total cuántos respondieron.
EJERCICIOS
5. Escribir una función que reciba un puntero a una
cadena de caracteres y que informe cuantas
palabras posee la cadena.
6. Desarrollar un programa que pida tres cadenas al
usuario y muestre el resultado de concatenar las
dos primeras letras de las cadenas introducidas.
Ejemplo: el usuario introduce como cadenas perro, vaca y
cocodrilo. El programa mostrará por pantalla: El resultado de
concatenar las dos primeras letras de las cadenas es: pevaco.
ENTRADA Y SALIDA DE CARACTERES
Funciones
• putchar() /* escribe un único carácter en la salida
estándar*/
• Ejemplo:
putchar('H'); putchar(‘o'); putchar(‘l'); putchar(‘a'); /*Salida Hola*/
• getchar() /* devuelve el carácter que se halle en la entrada
estándar. Aunque se utiliza para obtener
caracteres no devuelve un carácter, sino un
entero */
• Ejemplo:
int c;
c = getchar(); /* Nótese que getchar() no devuelve nada hasta que se presiona ENTER */
putchar(c);
ENTRADA Y SALIDA DE CADENA DE
CARACTERES
Funciones
• puts() /* imprime una cadena de caracteres en la salida
estándar (y produce un salto de línea). Le debemos
proporcionar la dirección donde encontrar la cadena de
caracteres.*/
• Ejemplo:
puts("Bienvenido a la programación"); puts(" en lenguaje C");
• gets() /* toma una cadena de caracteres de la entrada estándar
(es preciso terminar con un ENTER) y la almacena en una
variable string */
• Ejemplo:
char cadena[50];
puts("Escriba un texto:");
gets(cadena);
puts("El texto escrito es:");
puts(cadena);
PREPARADOS PARA EL
PRIMER PARCIAL??