Anda di halaman 1dari 44

UNIDAD IV:

Manejo de Cadenas de Caracteres


Objetivo:
Aprender a manipular datos alfanumricos y conocer las funciones propias del Lenguaje de Programacin C

Cadenas de Caracteres
ontenido de la unidad:
adenas de Caracteres

Generalidades Declaracin de Datos Alfanumricos Inicializacin de Variables de Caracteres Lectura de Cadenas de Caracteres Salida de Datos Alfanumricos

anejo de cadenas de Caracteres


Librera <string.h> Librera <stdlib.h> Librera <ctype>

Cadenas de Caracteres Introduccin


Con los datos alfanumricos solo se ha hecho operaciones de lectura y escritura No se pueden operar igual que los datos numricos Dos nombres no se pueden sumar o multiplicar Se puede:

Agregar un dato alfanumrico a otro del mismo tipo Contar cuantas veces aparece una letra determinada en una frase o texto determinado

Cadenas de Caracteres Generalidades

Una CADENA, o string, es un dato alfanumrico, que est formado por un grupo de caracteres, que tienen en un momento un valor o contenido especial. Un caracter es:

una letra (a, A, etc.), un nmero (6, 3, etc.), o un signo (%, #, etc.), incluso un espacio en blanco ( )

Cada smbolo del cdigo ASCII es un caracter y este cdigo est formado por 255 caracteres diferentes.
4

Cadenas de Caracteres Generalidades

Un solo caracter se escribe dentro de comillas simples


f, G, 5, %, },etc. char letra=m

Una cadena se escribe dentro de comillas dobles


Hola, como estas? AA10001 PRN115 2230-7025etc.


5

Cadenas de Caracteres Generalidades

El lenguaje C, no tiene un tipo de dato predefinido para las cadenas

El tipo que se usa es char y las variables que se declaran con ste, pueden almacenar un solo carcter

Las cadenas o strings se manejan en C, como arreglos de tipo char

En cada posicin del arreglo se almacena un carcter

Cadenas de Caracteres

Los datos alfanumricos (o strings) son conocidas tambin como constantes de cadenas o literales de cadena. El lenguaje C siempre agrega el carcter nulo (\0) al final de la cadena Para almacenar un carnet AA10001, se necesita un arreglo char de 8 posiciones
7

Cadenas de Caracteres
char cad[4] = ABC
// El arreglo cad, tiene 4 // elementos, el ltimo es \0
En

un programa, la cadena se almacena como si fueran 4 elementos de tipo char: A B C \0


los

cuales pueden ser accesados uno por uno, por medio de sus subndices: cad[0] = A cad[1] = B cad[2] = C cad[3] = \0

Cadenas de Caracteres

Con printf o puts se copia en la pantalla, carcter por carcter hasta que aparece el carcter \0

Declaracin de Datos Los datos alfanumricos son arreglos tipo Alfanumricos

char, con un carcter ms en su dimensin, para el caracter \0 Ejemplos: char cad[5];

// capacidad mxima: 4 // caracteres, el ltimo es \0 char cad1[20]; // cad1 puede almacenar // hasta 19 caracteres char nom[40], tel[9];
10

Inicializacin de Variables de Caracteres

Se puede dar valores iniciales a un vector tipo char, y es sta la nica vez que se asigna con el operador de asignacin =

char frase[12] = Buenos Das; //No sobra //espacio en la //cadena frase.

11

Inicializacin de Variables de Caracteres

char texto[255] = Esta puede ser una cadena muy larga; //Sobran 218 posiciones en texto char nom[ ] = Jose Francisco Morales Guevara //declara y llena un vector de 31 elementos

12

Lectura de Cadenas de Con la funcin scanf, el Caracteres formato de tipo de dato %s, y no

necesita el smbolo &. Ejemplo: scanf(%s, nombre); // lee la variable nombre // hasta encontrar un espacio // en blanco

Para leer ms de una palabra, se utiliza el formato [^\n] Ejemplo: scanf(%[^\n]s, nom); // Puede leer ms de una //palabra

13

Lectura de Cadenas de Adems se pueden utilizar Caracteres las funciones:

gets, que lee todos los caracteres digitados hasta que encuentra el fin de lnea (al presionar enter) gets(nom);

getchar, getch, getche, para leer un solo carcter char a, b, c; a=getchar(); //espera enter para capturar b=getch(); //no muestra ni espera enter c=getche(); //no espera enter para continuar
14

Lectura y Salida de Cadenas


char nom[40]; puts("Digite nombre: "); gets(nom); printf("nombre: %s\n",nom); nom[4]= ; printf("nombre: %s\n",nom);

15

Lectura y Salida de Cadenas


char nom[40]; puts("Digite nombre: "); scanf("%s", nom); printf("nombre: %s\n",nom);

16

Lectura y Salida de Cadenas


char nom[40]; puts("Digite nombre: "); scanf("%[^\n]s", nom); printf("nombre: "); puts(nom); putchar(nom[0]);

17

Manejo de Datos Para manejar o modificar cadenas de caracteres, se Alfanumricos


utilizar funciones propias de C Las funciones se encuentran en las libreras del compilador, algunas de stas son:

1. Librera string.h biblioteca estndar de C, contiene las funciones bsicas para manipular o trabajar con cadenas 2. Librera stdlib.h librera estndar de C, contiene las funciones para convertir datos alfanumricos en datos numricos
18

Manejo de Datos 3. Librera ctype.h Alfanumricos


Contiene funciones para verificacin de tipos de datos y conversin de letras minsculas a maysculas (y viceversa)

19

Funciones de Cadenas de Caracteres ms utilizadas


Librera <string.h> strlen(cad) strcat(cad1,cad2) strncat(cad1,cad2,n) strcpy(cad2,cad1) strncpy(cad2,cad1,n) strcmp(cad1,cad2) strcmpi(cad1, cad2)

srtncmp(cad1,cad2, n) strncpmi(cad1,cad2,n) stricpm(cad1,cad2) strrev(cad) strlwr(cad) strupr(cad)

20

Librera STRING #include <string.h> char cad1[20]="Funciones de la";


char cad2[20]="libreria string"; int loncad1, loncad2; loncad1=strlen(cad1); loncad2=strlen(cad2); printf("cadena 1: %s, longitud: %i\n",cad1,loncad1); printf("cadena 2: %s, longitud: %i\n",cad2,loncad2);

21

Librera STRING #include char cad1[20]="Funciones de la"; <string.h>

char cad2[20]="libreria string"; int loncad1, loncad2; strcat(cad1,cad2); loncad1=strlen(cad1); loncad2=strlen(cad2); printf("cadena 1: %s\n",cad1); printf("cadena 1: %s, longitud: %i\n",cad1,loncad1); printf("cadena 2: %s, longitud: %i\n",cad2,loncad2);

22

Librera STRING #include char cad1[20]="Funciones <string.h> de la";

char cad2[20]="libreria string"; int loncad1, loncad2; strncat(cad1,cad2,8); loncad1=strlen(cad1); loncad2=strlen(cad2); printf("cadena 1: %s\nlongitud: %i\n",cad1,loncad1); printf("cadena 2: %s\nlongitud: %i\n",cad2,loncad2);

23

Librera STRING #include char cad1[20]="Funciones de la"; <string.h>

char cad2[20]="libreria string"; int loncad1, loncad2; strcpy(cad2,cad1); loncad1=strlen(cad1); loncad2=strlen(cad2); printf("cadena 1: %s\nlongitud: %i\n",cad1,loncad1); printf("cadena 2: %s\nlongitud: %i\n",cad2,loncad2);

24

Librera STRING #include char cad1[20]="Funciones de la"; <string.h>

char cad2[20]="libreria string"; int loncad1, loncad2; strncpy(cad2,cad1,9); loncad1=strlen(cad1); loncad2=strlen(cad2); printf("cadena 1: %s\nlongitud: %i\n",cad1,loncad1); printf("cadena 2: %s\nlongitud: %i\n",cad2,loncad2);

25

Librera STRING #include char cad1[20]="Funciones de la, cad2[20]=", cad3[20]; <string.h>

int loncad1, loncad2, loncad3; strncpy(cad2,cad1,9); strncpy(cad3,cad1,9); loncad1=strlen(cad1); loncad2=strlen(cad2); loncad3=strlen(cad3); printf("cadena 1: %s\nlongitud: %i\n",cad1,loncad1); printf("cadena 2: %s\nlongitud: %i\n",cad2,loncad2); printf("cadena 3: %s\nlongitud: %i\n",cad3,loncad3);

26

Librera STRING #include char cad1[20]="funciones de la"; <string.h> char cad2[20]="funciones";


int res; res=strcmp(cad1,cad2); if (res>0) printf("%s es mayor que %s",cad1,cad2); else if (res<0) printf("%s es menor que %s",cad1,cad2); else printf("%s es igual a %s",cad1,cad2);

27

Librera STRING #include char cad1[20]=Funciones de la"; <string.h> char cad2[20]="funciones";


int res; res=strcmp(cad1,cad2); if (res>0) printf("%s es mayor que %s",cad1,cad2); else if (res<0) printf("%s es menor que %s",cad1,cad2); else printf("%s es igual a %s",cad1,cad2);

28

Librera STRING #include char cad1[20]=Funciones de la"; <string.h> char cad2[20]="funciones";


int res; res=strcmpi(cad1,cad2); if (res>0) printf("%s es mayor que %s",cad1,cad2); else if (res<0) printf("%s es menor que %s",cad1,cad2); else printf("%s es igual a %s",cad1,cad2);

29

Librera STRING #include char cad1[20]=funciones de la"; <string.h> char cad2[20]="funciones";


int res; res=strncmp(cad1,cad2,9); if (res>0) printf("%s es mayor que %s",cad1,cad2); else if (res<0) printf("%s es menor que %s",cad1,cad2); else printf("%s es igual a %s",cad1,cad2);

30

Librera STRING #include char cad1[20]="Funciones de la"; <string.h>


char cad2[20]="funciones DE LA"; int res; res=stricmp(cad1,cad2); if (res>0) printf("%s es mayor que %s",cad1,cad2); else if (res<0) printf("%s es menor que %s",cad1,cad2); else printf("%s es igual a %s",cad1,cad2);

31

Librera STRING #include <string.h> char cad1[20]="Lenguaje C";


puts(cad1); strrev(cad1); puts(cad1);

32

Librera STRING #include <string.h>


char cad1[20]="Lenguaje C"; puts(cad1); strlwr(cad1); puts(cad1); strupr(cad1); puts(cad1);

33

Funciones de Cadenas de Caracteres ms utilizadas


Librera <stdlib.h>

atoi(cad) atof(cad) atol(cad)

34

char num4[ ]=" +562"; int n1, n2, n3, n4; n1=atoi(num1); n2=atoi(num2); n3=atoi(num3); n4=atoi(num4); printf("la cadena %s convertida a entero es: %i\n",num1,n1); printf("la cadena %s convertida a entero es: %i\n",num2,n2); printf("la cadena %s convertida a entero es: %i\n",num3,n3); printf("la cadena %s convertida a entero es: %i\n",num4,n4);

Librera STDLIB #include char num1[ ]="-32200, <stdlib.h> num2[ ]="5688, num3[ ]="39000";

35

Librera STDLIB #include <stdlib.h> char num1[ ]="-3.2e+4, num2[ ]="5.688e4, num3[]="+3.9e+4";
char num4[]=" +5.62e 2"; float n1, n2, n3, n4; n1=atof(num1); n2=atof(num2); n3=atof(num3);n4=atof(num4); printf("la cadena %s convertida a real es: %.2f\n",num1,n1); printf("la cadena %s convertida a real es: %.2f\n",num2,n2); printf("la cadena %s convertida a real es: %.2f\n",num3,n3); printf("la cadena %s convertida a real es: %.2f\n",num4,n4);

36

Librera STDLIB #include <stdlib.h> char num1[ ]="-1568435, num2[ ]="+823000000";


char num3[ ]="+399555333, num4[ ]=" -400000000"; long n1, n2, n3, n4; n1=atol(num1); n2=atol(num2); n3=atol(num3); n4=atol(num4); printf("la cadena %s convertida a entero largo es: %i\n",num1,n1); printf("la cadena %s convertida a entero largo es: %i\n",num2,n2); printf("la cadena %s convertida a entero largo es: %i\n",num3,n3); printf("la cadena %s convertida a entero largo es: %i\n",num4,n4);

37

Funciones de Cadenas de Caracteres ms utilizadas


Librera <ctype.h>

isalnum(carac) isalpha(carac) isascii(carac) isdigit(carac) islower(carac) isupper(carac)

tolower(carac) toupper(carac)

38

Librera CTYPE #include <ctype.h> char cad1[30]="cde3$%&yh67";


int i, simbolos=0; for (i=0;i<strlen(cad1);i++) { if (! isalnum(cad1[i])) simbolos++; } printf("la cantidad de smbolos en la cadena); printf( %s es: %i\n",cad1,simbolos);

39

Librera CTYPE #include <ctype.h> char cad1[30]="cde3$%&yh67";


int i, letras=0; for (i=0;i<strlen(cad1);i++) { if (isalpha(cad1[i])) letras++; } printf("la cantidad de letras"); printf(" en la cadena %s es: %i\n",cad1,letras);

40

Librera CTYPE #include <ctype.h> char cad1[30]="cde3$%&yh67_";


int i, cantascii=0; for (i=0;i<strlen(cad1);i++) { if (isascii(cad1[i])) cantascii++; } printf("la cantidad de simbolos ascii"); printf(" en la cadena %s es: %i\n",cad1,cantascii);

41

Librera CTYPE #include char cad1[30]="cde3$%&yh67"; <ctype.h>


int i, digitos=0; for (i=0;i<strlen(cad1);i++) { if (isdigit(cad1[i])) digitos++; } printf("la cantidad de digitos"); printf(" en la cadena %s es: %i\n",cad1,digitos);

42

Librera CTYPE #include char cad1[30]="Juan Perez"; <ctype.h>


int i, may=0, min=0, noletra=0; for (i=0;i<strlen(cad1);i++) { if (islower(cad1[i])) min++; else if (isupper(cad1[i])) may++; else noletra++; } printf("En la cadena %s hay\n",cad1); printf("%i mayusculas\n",may); printf("%i minusculas\n",min); printf("%i de otros simbolos",noletra);

43

Librera CTYPE #include char cad1[30]="Juan Perez", cad2[30], cad3[30]; <ctype.h>


int i; for (i=0;i<strlen(cad1);i++) { cad2[i]=tolower(cad1[i]); cad3[i]=toupper(cad1[i]); } cad2[i]='\0'; cad3[i]='\0'; printf("Cadena 1: %s\n",cad1); printf("Cadena 2: %s\n",cad2); printf("Cadena 3: %s\n",cad3);

44

Anda mungkin juga menyukai