Está en la página 1de 8

Arreglos Cadenas de caracteres

a) Para que sirven y que son las cadenas de caracteres, sintaxis de las cadenas, ejemplos de sus usos En C no existe un tipo predefinido para el manejo de cadenas de caracteres como en otros lenguajes, sino que tienen que declararse como arreglos de caracteres. Lo que distingue a una cadena de caracteres, con respecto a un arreglo de caracteres cualquiera, es que la cadena de caracteres tiene como ltimo carcter al carcter nulo \0. Por ejemplo, si se declara el arregl o:

char cadena[8]; podemos asignar los siguientes valores a cada uno de sus elementos: cadena[0] = 'A' ;
cadena[1] = 'R' ; cadena[2] = 'R' ; cadena[3] = 'E' ; cadena[4] = 'G' ; cadena[5] = 'L' ; cadena[6] = 'O' ; cadena[7] = '\0';

Al contener el carcter nulo, el arreglo cadena ser reconocido por las funciones y objetos diseados para manipular cadenas de caracteres. Para manejar un arreglo de cadenas de caracteres se debe declarar como un arreglo bidimensional de elementos de tipo char, como puede observarse en el listado

#include <iostream.h> #include <conio.h>

void main() { unsigned short int calif[10]; char nombre[10][21]; // Se declara u n arreglo bidimensional // para 10 nombres de 20 caracteres por // nombre mas un caracter para el nulo. clrscr(); for( int x=0 ; x < 10 ; x++) { gotoxy(10,x+1); cout << "NOMBRE [" << x << "] = " ; cin >> nombre[x]; gotoxy(45,x+1); cout << "CALIFICACION [" << x << "] = " ; cin >> calif[x]; } }

En el listado se inicia con el subndice 0 para no desperdiciar el primer elemento del arreglo. Adems, se debe recordar que el subndice del ltimo elemento del arreglo es igual al tamao de la dimensin menos 1.

Asignacin de Valores Iniciales a Cadenas

Cuando se tiene un arreglo de cadenas de caracteres, se puede utilizar la forma compacta, slo que , en lugar de constantes numricas manejaramos constantes de cadena. Por Ejemplo: char nombres[][5] = { "HUGO", "PACO", "LUIS" } ;

es equivalente a: char nombres[3][5];

nombres[0] = "HUGO" ; nombres[1] = "PACO" ; nombres[2] = "LUIS" ; Esto tambin puede manejarse a nivel de caracteres, as : char nombres[][5] = { 'H','U','G','O','\0', 'P','A','C','O','\0', 'L','U','I','S','\0' }; o as: char nombres[3][5];

nombres[0][0] = 'H' ;

nombres[0][1] = 'U' ; nombres[0][2] = 'G' ;

nombres[0][3] = 'O' ; nombres[0][4] = '\0' ; nombres[1][0] = 'P' ; nombres[1][1] = 'A' ; nombres[1][2] = 'C' ; nombres[1][3] = 'O' ; nombres[1][4] = '\0' ;

nombres[2][0] = 'L' ; nombres[2][1] = 'U' ; nombres[2][2] = 'I' ; nombres[2][3] = 'S' ; nombres[2][4] = '\0' ;

En los listados 5.3 y 5.4 se muestran las dos primeras formas, observndose que se obtiene el mismo resultado. #include <iostream.h> #include <conio.h>

void main() { char nombres[][5] = { "HUGO","PACO","LUIS" }; int calif[] = { 100, 90, 100 }; clrscr();

for( int x=0 ; x < 3;x++) { gotoxy(35,x+10); cout nombres[x]; gotoxy(40,x+10); cout << calif[x];

Funciones con cadenas.

FUNC DESCRIPCION ION Copia una cadena de caracteres en otra.Se detiene cuando encuentra el stpcpy terminador nulo. strcat Aade una cadena de caracteres a otra. strchr Busca, en una cadena, un caracter dado. strcm Compara dos cadenas. p strcm Macro que compara dos cadenas sin distinguir entre maysculas y minsculas. pi

strcpy Copia una cadena. strcsp Busca segmentos que no contienen un subconjunto de un conjunto especificado de caracteres. n strdup Copia una cadena a una nueva localidad. _strer Genera un mensaje de error definido por el programador. ror strerr Retorna el apuntador al mensaje as ociado con el valor del error. or stricm Compara dos cadenas sin diferenciar entre maysculas y minsculas p strlen Determina la longitud de una cadena. strlwr Convierte las maysculas de una cadena en minsculas. strnca Aade el contenido de una cadena al final de otra. t strnc Compara parte de una cadena con parte de otra. mp strnc Compara parte de una cadena con parte de otra, sin distinguir entre mpi maysculas y minsculas. strncp Copia un un nmero de bytes dados, desde una cadena hacia otra. y strnic Compara parte de una cadena con parte de otra, sin distinguir entre maysculas y minsculas. mp strnset Hace que un grupo de elementos de una cadena tengan un valor dado. strpbr Busca la primera aparicin, en una cadena, de cualquier caracter de un conjunto dado. k strrch Busca la ltima aparicin de un caracter en una cadena. r strrev Invierte el orden de los caracteres de una cadena. strset Hace que los elementos de una ca dena tengan un valor dado. Busca en una cadena el primer segmento que es un subconjunto de un strspn conjunto de caracteres dado. strstr Busca en una cadena la aparicin de una subcadena dada. _strti Convierte la hora actual a una cadena. me strtod Convierte una cadena a un valor double long double. strtol Convierte una cadena a un valor long. strtoul Convierte una cadena a un valor unsigned long. strupr Convierte las minsculas de una cadena a maysculas

b) PRACTICA 8: Realice un programa basado en el que a continuacin se anexa que capture para cada integrante nombre1, nombre2,apellido_paterno, apellido_materno, asigne a variable nombre_completo las cuatro variables e imprima al final las cinco variables para cada integrante.

#include<stdio.h> #include<conio.h> #include<string.h> int x; char nomc[40][5]; char *nombres(void) { char res,nom1[10],nom2[10],apat[10],amat[10],nomc[40],*esp=" "; do { res=' '; clrscr(); printf("tienes 2 nombres?(s/n):");scanf ("%c",&res); }while((res!='s')&&(res!='S')&&(res!='N')&&(res!='n')); printf("Introduce tu primer nombre:");scanf("%s",nom1); if((res=='s')||(res=='S')){ printf("Introduce tu segundo nombre:");scanf("%s",nom2);} printf("Introduce tu apellido paterno:");scan f("%s",apat); printf("Introduce tu apellido materno:");scanf("%s",amat); strcpy(nomc,nom1);

strcat(nomc,esp); strcat(nomc,nom2); if((res=='s')||(res=='S')) strcat(nomc,esp); strcat(nomc,apat); strcat(nomc,esp); strcat(nomc,amat); return(nomc); } void main() { for(x=0;x<5;x++) strcpy(nomc[x],nombres()); clrscr(); for(x=0;x<5;x++) printf("%s\n",nomc[x]); getch(); }

También podría gustarte