You are on page 1of 34

Facultad d

I t d i Introduccin a
Vctor Melc Vctor Melc
2
de Ciencias
l P i la Programacin
chor Espinoza chor Espinoza
2014
Agen Agen
Arreglos de caracteres g
Cadena de caracteres:
Declaracin e inicializa
Lectura y escritura de c
Funciones y procedimie
d d d t de cadenas de caracte
nda nda
, inicializacin. ,
Definicin.
acin de cadenas.
cadenas.
entos para el manejo
res.
2 Vctor Melchor
Arreglo Arreglo de de CC
Para declarar un arreglo d Para declarar un arreglo d
de la misma forma que
arreglos.
char miArreglo[20];
a egos
En C no existe un tipo de d En C no existe un tipo de d
Las cadenas se definen
arreglo de caracteres que t
Las cadenas y manipulac Las cadenas y manipulac
esta forma, aplicaciones d
que trabajan sobre estos a
Caracteres Caracteres
de caracteres se procede de caracteres se procede
e en la declaracin de
dato nativo para cadenas dato nativo para cadenas.
n simplemente como un
terminan con un nulo.
ciones de cadenas son de ciones de cadenas son de
de arreglos y de funciones
arreglos.
3 Vctor Melchor
Inicializa Inicializa
Los arreglos de car
inicializados en la declar
Ejemplos:
char miArreglo[4] = {h
char Palabra[ ] = {b ,
Observe el uso de comillas sim
Omitir el uso de comillas simpl
acin acin
racteres pueden ser
racin.
h , o , l , a };
o , s , q , u, e };
mples para cada carcter.
es en cada carcter es un error.
4 Vctor Melchor
Cadena Cadena de de
U d d t Una cadena de caracte
de letras y smbolos,
pueden ser espacios pueden ser espacios
muchos mas como sign
interrogacin smbolos interrogacin, smbolos
El texto que se va El texto que se va
cadena no requiere
caracteres del vector
En C una cadena
caracteres del vector.
En C, una cadena
representa por un vecto
char el cual termina con char el cual termina con
Caracteres Caracteres
i eres es una secuencia
donde los smbolos
en blanco dgitos y en blanco, dgitos y
nos de exclamacin e
matemticos etc matemticos,etc.
a almacenar en una a almacenar en una
ocupar todos los
de caracteres se de caracteres se
or de variables del tipo
n el marcador \0.
5 Vctor Melchor
n el marcador \0 .
Caracter Caracter Nulo Nulo como como D D
El carcter n lo es n c El carcter nulo es un c
cdigo ASCII es cero.
representado en memor representado en memor
El carcter \0 es usado El carcter \0 es usado
final de una cadena. P
CC102 se representa en p
char curso2[ ] ={C,C char curso2[ ] { C , C
elimitador elimitador de de Cadenas Cadenas
carcter especial c o carcter especial cuyo
De este modo est
ria como 00000000 ria como 00000000.
o en C para denotar el o en C para denotar el
Por ejemplo, la cadena
n memoria como:
C,1,0,2,\0 };
6 Vctor Melchor
C , 1 , 0 , 2 , \0 };
Inicializacin Inicializacin
Ejemplos:
char nombre[ ] = {V ,
char nombre[8] = Vale
char nombre[ ] = Vale
Se inserta automticamente el
Esta asignacin se puede hace
b G t ll nombre =Gretell;
nn de de cadenas cadenas
a ,l ,e, r, i, a, \0 };
eria;
eria;
\0 en la posicin 7.
er SOLO en la declaracin:
//N itid
7 Vctor Melchor
//No permitido
Declaracin Declaracin de de
Si t i Sintaxis:
#define TAM 80
char idCadena [ TAM+
#define TAM 80
[
Debemos considerar un
tamao deseado para qu p q
marcador \0 al final de
alcance el tamao mximo
una una Cadena Cadena
+1 ]; ];
n casillero adicional al
ue pueda ser colocado el p
la cadena cuando sta
o.
8 Vctor Melchor
Lectura Lectura de de una una cade cade
Podemos leer una cade
como haramos con cualq
i l l t d l ms simple leer toda la ca
scanf que lee hasta encon
scanf ( %s, cadena );
Note que no se utiliza el
para cadenas. Esto suce para cadenas. Esto suce
vector ya es una dire
direccin de memoria al pp
scanf ( %s, &cadena[0] scanf ( %s , &cadena[0]
ena ena desde desde teclado teclado
ena carcter a carcter,
quier otro vector, pero es
d d l d adena usando el comando
ntrar un delimitador.
carcter ampersand (&)
ede pues el nombre del ede pues el nombre del
eccin de memoria (la
primer elemento). p )
] );
9 Vctor Melchor
] );
Ejem Ejem
Escriba un programa que
tamao no mayor a 100
continuacin su longitud(cu
digitado).
mplo mplo 1 1
solicite una cadena de
caracteres y obtenga a
uantos caracteres se han
10 Vctor Melchor
Ejem Ejem
Elabore un programa que
cadena clave. El program
usuario y mostrar un men
usuario acierta la clave.
mplo mplo 2 2
e declare e inicialice la
ma pedir una cadena al
nsaje de bienvenida si el
11 Vctor Melchor
La La funci funci
Lamentablemente, la lec
scanf lee solamente has scanf lee solamente has
decir, lee solamente una
uso. uso.
Para resolver esto pod Para resolver esto, pod
gets, que realiza la lec
carcter de fin de lnea (e carcter de fin de lnea (e
gets( cadena );
n n gets gets
ctura por teclado usando
sta el primer espacio es sta el primer espacio, es
palabra, lo que limita su
emos utilizar la funcin emos utilizar la funcin
ctura hasta encontrar el
enter) enter).
12 Vctor Melchor
Lectura Lectura de de una una cade cade
Otra opcin es explorar
ofrecidas por la funcin s ofrecidas por la funcin s
siguiente opcin:
scanf (%[^\n], cadena ) ( [ ] )
Lee una cadena de car
el carcter Enter.
ena ena desde desde teclado teclado
r las otras posibilidades
scanf As por ejemplo la scanf . As por ejemplo la
); )
racteres hasta encontrar
13 Vctor Melchor
Lectura Lectura de de una una cade cade
A f Aqu enfrentamos otro
comando scanf como
t l caracteres que los ex
provocando errores.
La solucin es utilizar un
mismo comportamiento mismo comportamiento
permita limitar la lectura
Las opciones son: Las opciones son:
fgets(cadena , 50 , stdin
scanf (%50[^\n], caden
g ( , ,
( [ ] ,
ena ena desde desde teclado teclado
bl l o problema: tanto el
gets pueden leer ms
i t t l d istentes en la cadena,
na funcin que tenga el
de gets pero que de gets, pero que
a un tamao mximo.
);
na );
);
14 Vctor Melchor
);
La La funci funci
fgets(cad , TAM, stdin );
fgets lee del teclado ha
los copia hacia la cadena
Interrumpe la lectura si e
No lo interrumpe con un espac
Es ms seguro que el
evita que los cara evita que los cara
almacenados al final del
nn fgets fgets
asta TAM-1 caracteres y
a cad.
ncuentra \n
cio(al contrario del scanf).
comando scanf, pues
acteres ledos sean acteres ledos sean
array.
15 Vctor Melchor
Escribir Escribir un un
Podemos escribir una
t i carcter, pero es ms si
el comando printf, con e
l l para leerla.
printf (%s\n, cadena );
printf (%s\n, &cadena[0
En este caso, printf espera la
primer elemento. p
aa cadena cadena
a cadena por pantalla
l ibi l tili d mple escribirla utilizando
el mismo formato utilizado
0] );
a direccin de memoria del
16 Vctor Melchor
Ejem Ejem
Escriba un programa que d
capacidad para 50 caracte
leer por teclado la primera
se debe copiar el contenido
la segunda cadena Imprim la segunda cadena. Imprim
las dos cadenas.
mplo mplo 3 3
declare dos cadenas con
eres. Luego se solicitar g
cadena. A continuacin,
o de la primera cadena a
ma al final el contenido de ma al final el contenido de
17 Vctor Melchor
Escribir Escribir un un
De forma anloga a los
t t f t tenemos puts y fputs, qu
pantalla.
t ( d ) puts ( cadena );
fputs ( cadena , stdout);
aa cadena cadena
comandos gets y fgets,
ib l d ue escriben la cadena en
18 Vctor Melchor
Funciones Funciones para para el el
Las cadenas de caracte
que existe una bibliot que existe una bibliot
comandos exclusivos pa
<string.h> . Entre las d string.h . Entre las d
ofrecidas por esta bibliote
strlen
Retorna el tamao de
nmero de caracteres. nmero de caracteres.
manejo manejo de de cadenas cadenas
eres son tan importantes
teca de funciones con teca de funciones con
ara cadenas, la biblioteca
diversas funcionalidades diversas funcionalidades
eca podemos destacar:
la cadena cad en
19 Vctor Melchor
Copia Copia de de una una cc
t
strcpy( destino origen )
strcpy
strcpy( destino, origen )
Copia la cadena orig
destino.
cadena cadena a a otra otra
); );
gen hacia la cadena
20 Vctor Melchor
Concatenacin Concatenacin de de
strcat strcat
strcat( destino, origen );
Concatena la cadena o
( , g );
Concatena la cadena o
cadena destino.
La cadena origen perma
dos dos cadenas cadenas
origen al final de la origen al final de la
anece inalterada.
21 Vctor Melchor
Comparacin Comparacin de de
t
strcmp( cad1 cad2 );
strcmp
strcmp( cad1, cad2 );
Compara dos cadena Compara dos cadena
retorna un valor:
0 si cad1 y ca
<0 si cad1 fue
>0 si cad1 fue
e dos e dos cadenas cadenas
as de caracteres y as de caracteres y
ad2 son iguales.
ra menor que cad2.
ra mayor que cad2.
22 Vctor Melchor
Ejem Ejem
Escriba un programa que
cadenas fueran iguales
cadenas iguales; en caso
dos cadenas e imprima la c
mplo mplo 4 4
lea dos cadenas. Si las
escriba el mensaje
o contrario, concatene las
cadena resultante.
23 Vctor Melchor
Vector de Vector de
Como cada cadena es un a
vector de cadenas es una m
char nombre[num_caden
De esta forma, para acce
usamos: usamos:
nombre[ i ];
cadenas cadenas
arreglo de caracteres, un
matriz de caracteres.
as][tam_cad];
eder a la cadena i-sima
24 Vctor Melchor
Ejem Ejem
Escriba un programa que
continuacin imprima cada
mplo mplo 5 5
lea cinco cadenas y a
una de ellas.
25 Vctor Melchor
Ejemplo Ejemplo 5 5 -- CC
Luego de leer el vector co
una cadena adicional y ve
vector de cadenas. En ca
ndice del vector.
Continuacin Continuacin
on las cinco cadenas, lea
rifique si est o no en el
aso afirmativo, escriba el
26 Vctor Melchor
Entrada Entrada con con format format
E t d d Este comando en vez d
lee desde una cadena.
sscanf(cadena, forma
Es muy utilizada para c
un formato numrico. un formato numrico.
oo sobre sobre cadenas cadenas
d l d d t l d de leer desde teclado
ato, argumentos);
convertir de cadena a
27 Vctor Melchor
Salida Salida con con formato formato
E t d d Este comando en vez de
imprime en una cadena.
sprintf(cadena, format
Es muy utilizada para c
cadena. cadena.
sobre sobre cadenas cadenas
i i i t ll e imprimir en pantalla
to, argumentos);
convertir de nmero a
28 Vctor Melchor
Arreglo Arreglo de de PP
Es un arreglo que contiene u
Cada puntero refiere a otro arr Cada puntero refiere a otro arr
Podemos ver este esquema g Podemos ver este esquema g
arreglos.
Se usa frecuentemente para
palabras.
char *ListaPalabras[ 10 ];
Punteros Punteros
una lista de punteros.
reglo reglo.
general como una lista de general como una lista de
a almacenar una lista de
29 Vctor Melchor
Almacenando Almacenando una una
estacion
char *estacion[]={verano,o
estacion
aa lista lista de de palabras palabras
too,invierno,primavera};
30 Vctor Melchor
Biblioteca Biblioteca <<
Retorna un valor verdadero
int isdigit( int c );
Retorna un valor verdadero
(falso) en otro caso.
int isalpha( int c );
Retorna un valor verdader
(falso) en otro caso.
int isalnum( int c );
Retorna un valor verdadero
0 (falso) en otro caso.
<<ctype.h ctype.h> >
o de c si es un digito y 0 o de c si es un digito y 0
ro si c es una letra y 0
o si c es un digito o letra y
31 Vctor Melchor
Biblioteca Biblioteca <<
Retorna un valor verdade
int islower( int c );
Retorna un valor verdade
minscula y 0 (falso) en otro
int isupper( int c );
Retorna un valor verdade
mayscula y 0 (falso) en otr ayscua y 0 ( aso) e o
<<ctype.h ctype.h> >
ero de c si es una letra ero de c si es una letra
o caso.
ro de c si es una letra
ro caso. o caso
32 Vctor Melchor
Biblioteca Biblioteca <<
Si c es una letra mayscu
int tolower( int c );
Si c es una letra mayscu
letra minscula sino retorna
int toupper( int c );
Si c es una letra minscula,
mayscula sino retorna el m ayscua s o e o a e
<<ctype.h ctype.h> >
ula retorna c como una ula, retorna c como una
a el mismo argumento.
retorna c como una letra
mismo argumento. s o a gu e o
33 Vctor Melchor
GRAC GRACCIAS!! CIAS!!
34

You might also like