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
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
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
El tipo que se usa es char y las variables que se declaran con ste, pueden almacenar un solo 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
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
// capacidad mxima: 4 // caracteres, el ltimo es \0 char cad1[20]; // cad1 puede almacenar // hasta 19 caracteres char nom[40], tel[9];
10
Se puede dar valores iniciales a un vector tipo char, y es sta la nica vez que se asigna con el operador de asignacin =
11
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
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
15
16
17
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
19
20
21
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
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
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
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
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
27
28
29
30
31
32
33
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
37
tolower(carac) toupper(carac)
38
39
40
41
42
43
44