Вы находитесь на странице: 1из 92

Programacin

Clase 21. Strings


Prof. Gonzalo Mller
gmullerb@mail.com

Facultad de Ingeniera Universidad Central de Venezuela

Clase Anterior
Estructuras con Estructuras. UML: NOMBRE
dato 1: tipo dato 2: tipo dato 3: ESTRUCTURA dato N: tipo

Declaracin:
struct ESTRUCTURA2 { ESTRUCTURA1 campo; };
Programacin Prof. Gonzalo Mller Clase 21 GM - 2

Clase Anterior
Manejo: variable.campo.campo
Asignacin de la estructura de una estructura

Estructuras Anidadas. Arreglos de Estructuras. Declaracin: ESTRUCTURA nombre[TAMAO] Manejo: variable[ndice].campo


Programacin Prof. Gonzalo Mller Clase 21 GM - 3

Clase Anterior
Estructuras con Arreglos. NOMBRE UML:
dato 1: tipo dato 2: tipo dato 3: tipo[#] dato N: tipo

Declaracin:

struct ESTRUCTURA { tipo campo[TAMAO]; };


Programacin Prof. Gonzalo Mller Clase 21 GM - 4

Clase Anterior
Manejo: variable.campo[ndice] Estructura Arreglo:
struct NOMBRE { tipo nombreArreglo[TAMAO]; unsigned tipoentero cantidad; };

Beneficios: Copia de arreglos, Retorno de arreglos.


Programacin Prof. Gonzalo Mller Clase 21 GM - 5

Cadenas de Caracteres

Programacin Prof. Gonzalo Mller Clase 21 GM - 6

Constantes Cadena de Caracteres


Constante Carcter: Cualquier carcter encerrado entre apostrofes. `A `1 `q `; ` `) `

Programacin Prof. Gonzalo Mller Clase 21 GM - 7

Constantes Cadena de Caracteres


Constante Carcter: Cualquier carcter encerrado entre apostrofes. `A `1 `q `; ` `) `

1 Carcter!
Programacin Prof. Gonzalo Mller Clase 21 GM - 8

Constantes Cadena de Caracteres


Constante Cadena de Caracteres: Cualquier conjunto de caracteres encerrado entre comillas. Lenguaje C++ es el Mejor

Programacin Prof. Gonzalo Mller Clase 21 GM - 9

Constantes Cadena de Caracteres


Constante Cadena de Caracteres: Cualquier conjunto de caracteres encerrado entre comillas. Lenguaje C++ es el Mejor

1 Cadena Caracteres!
Programacin Prof. Gonzalo Mller Clase 21 GM - 10

Cadena de Caracteres
Cada carcter representa un elemento de la cadena. Ejemplo:

EL 1 FLACO

Programacin Prof. Gonzalo Mller Clase 21 GM - 11

Cadena de Caracteres
Cada carcter representa un elemento de la cadena. Ejemplo:

EL 1 FLACO

Texto

Programacin Prof. Gonzalo Mller Clase 21 GM - 12

Cadena de Caracteres
Cada carcter representa un elemento de la cadena. Ejemplo:

EL 1 FLACO
Carcter

Programacin Prof. Gonzalo Mller Clase 21 GM - 13

Cadena de Caracteres
Cada carcter representa un elemento de la cadena. Ejemplo:

EL 1 FLACO

Programacin Prof. Gonzalo Mller Clase 21 GM - 14

Cadena de Caracteres
Arreglo tipo Carcter. Almacena Textos. Como todo arreglo usualmente no se ocupan todos los elementos. Tambin se le conoce como tipo string.

L e n g u a j e

C + +

e s

e l

Me j o r

Programacin Prof. Gonzalo Mller Clase 21 GM - 15

String
Un string esta definido: Nombre. Tamao: cantidad de caracteres del string.

Programacin Prof. Gonzalo Mller Clase 21 GM - 16

String
Un string esta definido: Nombre. Tamao: cantidad de caracteres del string. Ejemplo: Se requiere el apellido de un estudiante. String ser: apellido
Variable apellido: carcter [40]
Programacin Prof. Gonzalo Mller Clase 21 GM - 17

String
Un string esta definido: Nombre. Tamao: cantidad de caracteres del string. Ejemplo: Se requiere el apellido de un estudiante. String ser: apellido
Variable apellido: carcter [40]
Programacin Prof. Gonzalo Mller Clase 21 GM - 18

String
Un string esta definido: Nombre. Tamao: cantidad de caracteres del string. Ejemplo: Se requiere el apellido de un estudiante. String ser: apellido
Variable apellido: carcter [40]
Programacin Prof. Gonzalo Mller Clase 21 GM - 19

Strings en C
Declaracin de una variable tipo string:
char identificador[TAMAO]
char identificador1[TAMAO1], identificador2[TAMAO2],

(TAMAO: Siempre es una constante)

Ejemplo:
// string de 40 caracteres char texto[40]; Tamao

Programacin Prof. Gonzalo Mller Clase 21 GM - 20

String
Arreglo Cantidad Cantidad ?

Programacin Prof. Gonzalo Mller Clase 21 GM - 21

String
Arreglo Cantidad Cantidad ?
struct TEXTO{ char texto[40]; unsigned char largo; };

Programacin Prof. Gonzalo Mller Clase 21 GM - 22

Strings en C
C trabaja con cadenas terminadas en NULL.

texto Cadena de Tamao N 00h No utilizado 0 N-1 N N+1

40

Programacin Prof. Gonzalo Mller Clase 21 GM - 23

Strings en C

Programacin Prof. Gonzalo Mller Clase 21 GM - 24

Strings en C
Se utiliza un carcter no imprimible para indicar el final de la cadena de caracteres. El carcter no imprimible utilizado es primer carcter de la tabla ASCII: 0 00h.
texto Cadena de Tamao N 00h No utilizado 0 N-1 N N+1
No confundir cdigo ASCII 0, tambin conocido como NULL, con la constante carcter `0 (a esta le corresponde el cdigo ASCII 48).
Programacin Prof. Gonzalo Mller Clase 21 GM - 25

40

Strings en C

Programacin Prof. Gonzalo Mller Clase 21 GM - 26

Strings en C
Para la 1 Cadena se tiene:
texto
Lenguaje C++ es el N1\0,wem8A43% 4&76/ Hasta aqu llega la cadena almacenada

Para la 2 Cadena se tiene:


texto

Lenguaje C++ es el Mejor\0em8A43% 4&76/

Para la 3 Cadena se tiene:


texto

Hasta aqu llega la cadena almacenada

Lenguaje C++ es el Mejor!!!!!! \03% 4&76/ Hasta aqu llega la cadena almacenada
Programacin Prof. Gonzalo Mller Clase 21 GM - 27

Strings en C
En lugar de una estructura arreglo:
struct TEXTO { char texto[40]; char largo; };

El carcter NULL indica el final de la cadena:


char texto[40];

texto Cadena de Tamao N 00h No utilizado 0 N-1 N N+1


Programacin Prof. Gonzalo Mller Clase 21 GM - 28

40

Strings en C
Ventaja: No tiene limite en el tamao mximo de la cadena. Desventaja: Se desconoce el tamao de la cadena de antemano.

Programacin Prof. Gonzalo Mller Clase 21 GM - 29

Strings en C
Ventaja: No tiene limite en el tamao mximo de la cadena. Desventaja: Se desconoce el tamao de la cadena de antemano. Ejemplo: Determinar el largo de un string:
unsigned char k, largo; k = 0; while (texto[k] != 0) { k = k + 1; } largo = k;
Programacin Prof. Gonzalo Mller Clase 21 GM - 30

Strings en C
Ventaja: No tiene limite en el tamao mximo de la cadena. Desventaja: Se desconoce el tamao de la cadena de antemano. Ejemplo: Determinar el largo de un string:
unsigned char k, largo; Comparacin contra NULL k = 0; while (texto[k] != 0) { k = k + 1; } largo = k;
Programacin Prof. Gonzalo Mller Clase 21 GM - 31

Strings en C
Utilizando el formato %s es posible realizar la lectura y escritura de un string con scanf y printf. scanf: lee una cadena hasta encontrar:
un espacio en blanco ` , una tabulacin `\t, una tabulacin vertical `\v, un retorno de carro `\r, una nueva lnea `\n, una nueva forma `\f

carcter que se sustituye por el carcter nulo en la cadena.

Programacin Prof. Gonzalo Mller Clase 21 GM - 32

Strings en C
Ejemplo:
// string de 41 caracteres char texto[41]; scanf(%s, texto); printf(Cadena: %s, texto); Especificadores

Programacin Prof. Gonzalo Mller Clase 21 GM - 33

Strings en C
Ejemplo:
// string de 41 caracteres char texto[41]; scanf(%s, texto); printf(Cadena: %s, texto); Notar que no se utiliza el operador referencia ya que el identificador por si slo del string es la direccin

Programacin Prof. Gonzalo Mller Clase 21 GM - 34

Strings en C
Es recomendable incluir el largo mximo que puede tener la cadena a leer en el formato:
%Tamao-1s

Ejemplo: si Tamao es 51 %50s Por lo tanto, si el string es de 51, la cadena mxima que puede ser ingresada es de 50 caracteres y en el carcter 51 se almacena el carcter nulo.
Programacin Prof. Gonzalo Mller Clase 21 GM - 35

Strings en C
De esta forma el usuario no puede ingresar un cadena superior al tamao que sea definido para el string. Ejemplo:
// string de 41 caracteres char texto[41]; scanf(%40s, texto); printf(Cadena: %s, texto);

Programacin Prof. Gonzalo Mller Clase 21 GM - 36

Strings en C
Otras funciones que pertenecen a stdio para la lectura y escritura de string: gets: Lee una cadena hasta encontrar un \n y sustituye el mismo por el carcter nulo. gets(Variable)

Programacin Prof. Gonzalo Mller Clase 21 GM - 37

Strings en C
Ejemplo:
// string de 41 caracteres char texto[41]; gets(texto); printf(Cadena: %s, texto); gets no permite validar el tamao de la cadena leda

Programacin Prof. Gonzalo Mller Clase 21 GM - 38

Strings en C
Ejemplo: Construir un programa estructurado en C para determinar la cantidad de gs contenidas en un texto ingresado por el usuario.

Fase 1: Diseo y Anlisis: DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa estructurado en C.
Programacin Prof. Gonzalo Mller Clase 21 GM - 39

Ejercicio
Construir un programa estructurado en C para: Determinar la cantidad de vocales contenidas en un texto ingresado por el usuario. Fase 1: Diseo y Anlisis: DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa estructurado en C.
Evaluacin: Textos y Tiempo
Programacin Prof. Gonzalo Mller Clase 21 GM - 40

Manejo de un Arreglo
Asignacin: El operador asignacin = NO realiza la asignacin de todos los valores del arreglo. NO SE PUEDE ASIGNAR UN ARREGLO A OTRO CON EL OPERADOR ASIGNACIN Ejemplo:
char nombre1[40], nombre2[40]; nombre2 = nombre1; NO COPIA EL STRING(ARREGLO) nombre1 a nombre2

Programacin Prof. Gonzalo Mller Clase 21 GM - 41

Strings en C
Recomendacin: Definir una constante simblica para establecer el tamao del string. Definir una constante simblica para establecer el formato de lectura para scanf. Ejemplo:
#define MAXTXT 41 #define FORMATOTXT %40s char texto[41]; char texto[MAXTXT]; scanf(%40s,texto); scanf(FORMATOTXT,texto); scanf(%40s,texto); scanf(FORMATOTXT,texto); Al menos es necesario cambiar aquProgramacin Prof. Gonzalo Mller Clase 21 GM - 42

String en Mdulos

String como retorno NO SE PUEDE RETORNA UN STRING(ARREGLO) String como parmetros

Programacin Prof. Gonzalo Mller Clase 21 GM - 43

String como parmetro


Declaracin y Definicin modulo(char parmetro1[TAMAO], ) Llamada:
Variable cadena de caracteres de tamao menor o igual al de parmetro1

modulo(variable1, )

Entrada y Retorno

Programacin Prof. Gonzalo Mller Clase 21 GM - 44

String como parmetro


Declaracin y Definicin modulo(char parmetro1[TAMAO], ) Llamada:
Variable cadena de caracteres de tamao menor o igual al de parmetro1

modulo(variable1, ) modulo(cadena, )
Constante cadena de caracteres de tamao menor o igual al de parmetro1
Programacin Prof. Gonzalo Mller Clase 21 GM - 45

Entrada y Retorno Slo Entrada

String como parmetro


Ejemplo:
Cadena como parmetro de entrada

void escribeTexto(char texto[50]); main() { char cadena1[50]; char cadena2[25]; Argumento Variable escribeTexto(cadena1); escribeTexto(cadena2); escribeTexto(C++ es el Mejor!!); }

Argumento Constante

Programacin Prof. Gonzalo Mller Clase 21 GM - 46

Strings en C
Ejemplo: Construir un programa modular en C con acoplamiento de datos para determinar la cantidad de gs contenidas en un texto ingresado por el usuario.

Fase 1: Diseo y Anlisis: DES y DTD. DES, DRE DF de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C.
Programacin Prof. Gonzalo Mller Clase 21 GM - 47

Ejercicio
Construir un programa modular en C con acoplamiento de datos para: Determinar la cantidad de vocales contenidas en un texto ingresado por el usuario. Fase 1: Diseo y Anlisis: DES y DTD. DES, DRE DF de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C.
Evaluacin: Textos y Tiempo
Programacin Prof. Gonzalo Mller Clase 21 GM - 48

Arreglo de Strings
Declaracin
char identificador[TAMAO1] [TAMAO2] (TAMAOx: Siempre es una constante)

Programacin Prof. Gonzalo Mller Clase 21 GM - 49

Arreglo de Strings
Declaracin
char identificador[TAMAO1] [TAMAO2] (TAMAOx: Siempre es una constante) Tamao Arreglo

Programacin Prof. Gonzalo Mller Clase 21 GM - 50

Arreglo de Strings
Declaracin
char identificador[TAMAO1] [TAMAO2] (TAMAOx: Siempre es una constante) Tamao de Strings

Programacin Prof. Gonzalo Mller Clase 21 GM - 51

Arreglo de Strings
Declaracin
char identificador[TAMAO1] [TAMAO2] (TAMAOx: Siempre es una constante)

Ejemplo:
// Arreglo de 80 apellidos de 40 caracteres char apellidos[80][40]; Tamao de Arreglo
Programacin Prof. Gonzalo Mller Clase 21 GM - 52

Arreglo de Strings
Declaracin
char identificador[TAMAO1] [TAMAO2] (TAMAOx: Siempre es una constante)

Ejemplo:
// Arreglo de 80 apellidos de 40 caracteres char apellidos[80][40]; Tamao de Strings
Programacin Prof. Gonzalo Mller Clase 21 GM - 53

Arreglo de Strings
Manejo identificador[indice1] [indice2]

Programacin Prof. Gonzalo Mller Clase 21 GM - 54

Arreglo de Strings
Manejo identificador[indice1] [indice2]
Cadena indice1

Programacin Prof. Gonzalo Mller Clase 21 GM - 55

Arreglo de Strings
Manejo identificador[indice1] [indice2]
Carcter indice2

Programacin Prof. Gonzalo Mller Clase 21 GM - 56

Manejo de un Arreglo de Strings


Ejemplo:
// Arreglo de 80 apellidos de 40 caracteres char apellidos[80][40]; apellido k apellido k scanf(%39s, apellidos[k]); printf(Apellido %u:%s, k, apellidos[k]); printf(Inicial:%c, apellidos[k][0]);
1 carcter

Programacin Prof. Gonzalo Mller Clase 21 GM - 57

Manejo de un Arreglo de Strings


Ejemplo:
// Arreglo de 80 apellidos de 40 caracteres char apellidos[80][40]; Lee apellido k Escribe apellido k scanf(%39s, apellidos[k]); printf(Apellido %u:%s, k, apellidos[k]); printf(Inicial:%c, apellidos[k][0]);
Escribe inicial del apellido

Programacin Prof. Gonzalo Mller Clase 21 GM - 58

Manejo de un Arreglo de Strings


Elementos indispensables en el manejo de un arreglo de strings: Tipo. Tamao.
Constante Entera sin Signo. Debe ser sobredimensionado.

Cantidad.
Tamao. Variable Entera sin Signo. Define los elementos a ocupar del arreglo de strings.

Bucle.
Permite desplazarse a travs del arreglo de strings.

Contador.
< Cantidad. Indica el string del arreglo a acceder.
Programacin Prof. Gonzalo Mller Clase 21 GM - 59

Manejo de un Arreglo de String


Ejemplo: Disear y construir modular en C que lea un conjunto de N nombres y los muestre en la salida en forma inversa a como fueron ingresados.

Fase 1: Diseo y Anlisis: DES y DTD. DES, DRE DF de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C.
Programacin Prof. Gonzalo Mller Clase 21 GM - 60

Ejercicio

Disear y construir un programa modular en C que lea N textos, determine el cuantas vocales tiene cada uno y escriba en la salida en forma inversa a como fueron ingresados. Fase 1: Diseo y Anlisis: DES y DTD. DES, DRE DF de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C.
Programacin Prof. Gonzalo Mller Clase 21 GM - 61

Estructuras con String


Las estructuras pueden ser representadas grficamente utilizando UML (Unified Modeling Language):
NOMBRE dato1: tipo dato2: tipo dato3: carcter[#] datoN: tipo

string

Programacin Prof. Gonzalo Mller Clase 21 GM - 62

Ejercicio

Construir un programa modular en C++ para: Leer 1 polgono (Nombre, N de lados, longitud de un lado, apotema) y escribir en la salida. Fase 1: Diseo y Anlisis: DTD y UML DES, DRE DF, LV y CF de Mdulos y TM. DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Evaluacin: Textos y Tiempo
Programacin Prof. Gonzalo Mller Clase 21 GM - 63

Ejercicio

Construir un programa modular en C++ para: Leer N polgonos (Nombre, N identificador, N de lados, longitud de un lado, apotema) y escribir en la salida de forma inversa. Fase 1: Diseo y Anlisis: DTD y UML DES, DRE DF, LV y CF de Mdulos y TM. DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Evaluacin: Textos y Tiempo
Programacin Prof. Gonzalo Mller Clase 21 GM - 64

Ejercicio

Disear y construir un programa modular en C que lea una cadena de caracteres y determine el largo y cuantos espacios tiene. Fase 1: Diseo y Anlisis: DTD DES, DRE DF, LV y CF de Mdulos y TM. DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C.
Programacin Prof. Gonzalo Mller Clase 21 GM - 65

Ejercicio

Construir un programa modular C++ para: Leer una lista de materias (nombre, cdigo y unidades de crdito) y escribir en la salida de forma inversa. Fase 1: Diseo y Anlisis: DTD y UML DES, DRE DF, LV y CF de Mdulos y TM. DES, DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Evaluacin: Textos y Tiempo
Programacin Prof. Gonzalo Mller Clase 21 GM - 66

Ejercicio
Construir un programa en C para: a) Leer una cadena de caracteres y: 1) Determine si es palndromo. 2) Cree una copia. 3) Escriba en pantalla en forma inversa. 4) Determinar el nmero de veces que aparece un carcter dado. b) Leer dos cadenas de caracteres y determine: 1) Si son iguales. 2) Si al invertir alguna son iguales. c) Realizar la misma funcionalidad de gets pero con tamao mximo.
Programacin Prof. Gonzalo Mller Clase 21 GM - 67

Resumen
Cadenas de Caracteres. Declaracin de una variable string. String en C. Lectura y Escritura de un string en C. scanf, printf. gets. String como parmetro. Arreglos de string. Estructuras con string.
Programacin Prof. Gonzalo Mller Clase 21 GM - 68

Lectura Extra

Manejo de un String
Historia

Programacin Prof. Gonzalo Mller Clase 21 GM - 69

Cadena de Caracteres
Se tienen las siguientes constantes: Lenguaje C++ es el N1 22 Caracteres Lenguaje C++ es el Mejor 24 Caracteres Lenguaje C++ es el Mejor!!!!!! 30 Caracteres Todas estas cadenas pueden ser almacenadas en el arreglo de texto de 40 caracteres

Programacin Prof. Gonzalo Mller Clase 21 GM - 70

Cadena de Caracteres
Ejemplo: Una forma de leer por teclado cualquiera de stas cadena de caracteres sera:
char texto[40]; unsigned char k; char leido; // k = 0; do { leido = getchar(); texto[k] = leido; k = k + 1; } while(leido != '\n');
Programacin Prof. Gonzalo Mller Clase 21 GM - 71

Cadena de Caracteres
Ejemplo: El siguiente cdigo permite escribir en pantalla en contenido del arreglo texto sera:
unsigned char k; // k = 0; while (k != 40) { printf(%c, texto[k]); k = k + 1; }

Programacin Prof. Gonzalo Mller Clase 21 GM - 72

Cadena de Caracteres
Al comenzar la ejecucin del programa, en memoria el arreglo de 40 caracteres contendr cualquier valor, por ejemplo:
texto hW.q1^3ft=# 0l; /Aq @,wem8A43% 4&76/*

Por lo tanto,

Programacin Prof. Gonzalo Mller Clase 21 GM - 73

Cadena de Caracteres
Si se almacena el 1 string en texto : Lenguaje C++ es el N1 Se escribira en pantalla: Lenguaje C++ es el N1@,wem8A43% 4&76/*
Cadena de 22 caracteres Restantes 18 caracteres

Si se almacena el 2 string en texto: Lenguaje C++ es el Mejor Se escribira en pantalla: Lenguaje C++ es el Mejorwem8A43% 4&76/*
Programacin Prof. Gonzalo Mller Clase 21 GM - 74

Cadena de Caracteres
Si se almacena el 3 string en texto : Lenguaje C++ es el Mejor!!!!!! Se escribira en pantalla: Lenguaje C++ es el Mejor!!!!!!43% 4&76/*
Cadena de 30 Caracteres Restantes 10 Caracteres

Es necesario establecer una forma de indicar el final o el tamao de la cadena almacenada en el string !
Programacin Prof. Gonzalo Mller Clase 21 GM - 75

Cadena de Caracteres
Formas de manejar de un string: 1. Se podra manejar como estructura arreglo, utilizando un campo para almacenar la cantidad de caracteres. CADENA char texto[40]; unsigned char largo;

Programacin Prof. Gonzalo Mller Clase 21 GM - 76

Cadena de Caracteres
Para la 1 Cadena se tiene:
texto
Lenguaje C++ es el N1@,wem8A43% 4&76/

largo = 22

Para la 2 Cadena se tiene:


texto
Lenguaje C++ es el Mejorwem8A43% 4&76/

largo = 24

Para la 3 Cadena se tiene:


texto
Lenguaje C++ es el Mejor!!!!!!43% 4&76/

largo = 30
Programacin Prof. Gonzalo Mller Clase 21 GM - 77

Cadena de Caracteres
Ejemplo: leer una cadena:
CADENA cadena1; char leido; cadena1.ucLargo = 0; do { leido = getchar(); cadena1.texto[cadena1.ucLargo]=leido; cadena1.ucLargo = cadena1.ucLargo + 1; } while(leido!= \n);

Desventajas:
Se utilizan dos variables.
Programacin Prof. Gonzalo Mller Clase 21 GM - 78

Cadena de Caracteres
2. Se podra rellenar con espacios el resto del string o lo que es lo mismo inicializar el arreglo con espacios.
texto

32 1

32 2

32 3 38 39

32 40

Cdigo ASCII de espacio

Programacin Prof. Gonzalo Mller Clase 21 GM - 79

Cadena de Caracteres
Para la 1 Cadena se tiene:
texto
Lenguaje C++ es el N1

Para la 2 Cadena se tiene:


texto
Lenguaje C++ es el Mejor

18 caracteres espacios

Para la 3 Cadena se tiene:


texto
Lenguaje C++ es el Mejor!!!!!!

16 caracteres espacios

Programacin Prof. Gonzalo Mller Clase 21 GM - 80

10 caracteres espacios

Cadena de Caracteres
Ejemplo: El siguiente cdigo permite inicializar el string:
unsigned char k; k = 0; while (k < 40) { texto[k] = 32; // ` k = k + 1; }

Desventajas:
Se escriben espacios innecesarios. Se desconoce el tamao de la cadena almacenada.
Programacin Prof. Gonzalo Mller Clase 21 GM - 81

Cadena de Caracteres
3. Tomar el primer elemento del arreglo de caracteres para almacenar el tamao.
texto

1 texto[1]texto[39]: Cadena de caracteres almacenada

39

texto[0]: Tamao de la cadena de caracteres almacenada

Programacin Prof. Gonzalo Mller Clase 21 GM - 82

Cadena de Caracteres
Para la 1 Cadena se tiene:
texto
22 Lenguaje C++ es el N1@,wem8A43% 4&76/

Para la 2 Cadena se tiene:


texto
24 Lenguaje C++ es el Mejorwem8A43% 4&76/

39

Para la 3 Cadena se tiene:


texto
30 Lenguaje C++ es el Mejor!!!!!!43% 4&76/

39

Programacin Prof. Gonzalo Mller Clase 21 GM - 83

39

Cadena de Caracteres
Ejemplo: Se podra leer una cadena a travs del siguiente cdigo:
unsigned char k; char leido; k = 1; do { leido = getchar(); texto[k] = leido; k = k + 1; Se calcula Tamao }while(leido != \n); Se almacena Tamao texto[0] = k;
Programacin Prof. Gonzalo Mller Clase 21 GM - 84

Cadena de Caracteres
Ejemplo: Se podra escribir en pantalla en contenido del arreglo texto a travs del siguiente cdigo:
unsigned char k; k = 1; while (k < texto[0]) { printf(%c, texto[k]); k = k + 1; }

Desventaja: El tamao mximo de la cadena puede ser de 255.


Programacin Prof. Gonzalo Mller Clase 21 GM - 85

Cadena de Caracteres
4. Se utiliza un carcter salto de lnea para indicar el final de la cadena de caracteres.

texto Cadena de Tamao N \n No utilizado 0 N-1 N N+1

40

Programacin Prof. Gonzalo Mller Clase 21 GM - 86

Cadena de Caracteres
Para la 1 Cadena se tiene:
texto
Lenguaje C++ es el N1\n,wem8A43% 4&76/ Hasta aqu llega la cadena almacenada

Para la 2 Cadena se tiene:


texto

Lenguaje C++ es el Mejor\nem8A43% 4&76/

Para la 3 Cadena se tiene:


texto

Hasta aqu llega la cadena almacenada

Lenguaje C++ es el Mejor!!!!!! \n3% 4&76/ Hasta aqu llega la cadena almacenada
Programacin Prof. Gonzalo Mller Clase 21 GM - 87

Cadena de Caracteres
Ejemplo: Utilizando el carcter \n, el cdigo para escribir en pantalla sera:
unsigned char k; k = 0; while (texto[k] != \n) { printf(%c, texto[k]); k = k + 1; }

Ventaja: No tiene limite en el tamao mximo de la cadena. Desventajas: Se desconoce el tamao de la cadena de antemano. La cadena no puede contener \n
Programacin Prof. Gonzalo Mller Clase 21 GM - 88

Cadena de Caracteres
5. Se utiliza un carcter no imprimible para indicar el final de la cadena de caracteres. El carcter no imprimible utilizado es primer carcter de la tabla ASCII: 0 00h.
texto Cadena de Tamao N 00h No utilizado 0 N-1 N N+1
No confundir cdigo ASCII 0, tambin conocido como NULL, con la constante carcter `0 (a esta le corresponde el cdigo ASCII 48).
Programacin Prof. Gonzalo Mller Clase 21 GM - 89

40

Cadena de Caracteres
Para la 1 Cadena se tiene:
texto
Lenguaje C++ es el N1\0,wem8A43% 4&76/ Hasta aqu llega la cadena almacenada

Para la 2 Cadena se tiene:


texto

Lenguaje C++ es el Mejor\0em8A43% 4&76/

Para la 3 Cadena se tiene:


texto

Hasta aqu llega la cadena almacenada

Lenguaje C++ es el Mejor!!!!!! \03% 4&76/ Hasta aqu llega la cadena almacenada
Programacin Prof. Gonzalo Mller Clase 21 GM - 90

Cadena de Caracteres
Ejemplo: Se podra leer una cadena a travs del siguiente cdigo:
unsigned char k; char leido; k = 0; do { leido = getchar(); texto[k] = leido; k = k + 1; }while(leido != \n); texto[k] = 0;

Se almacena Final

Programacin Prof. Gonzalo Mller Clase 21 GM - 91

Cadena de Caracteres
Ejemplo: Utilizando el carcter NULL, el cdigo para escribir en pantalla sera:
unsigned char k; k = 0; while (texto[k] != 0) { printf(%c, texto[k]); k = k + 1; }

Ventaja: No tiene limite en el tamao mximo de la cadena. Desventaja: Se desconoce el tamao de la cadena de antemano.
Programacin Prof. Gonzalo Mller Clase 21 GM - 92

Вам также может понравиться