You are on page 1of 5

PROGRAMACIN

laboratorio
2007-1

PRCTICA 7. CADENAS DE CARACTERES


OBJETIVOS:

Familiarizarse con la librera string.h


El alumno practicar el empleo de funciones para la manipulacin de cadenas.
El alumno aprender a validar datos al realizar una captura.
EQUIPO:

Computadora
Disco Flexible o algn otro medio para almacenar sus prcticas
Turbo C (TC)
G ENERALIDADES

CADENAS DE CARACTERES
Una cadena es un conjunto de caracteres, el cual cada caracter se encuentra en una posicin determinada dentro de
la cadena. Se puede utilizar una cadena general o una cadena fija de un nmero determinado de caracteres, estas
se declaran en el siguiente formato:
char* var_cadena;
char cadena[N];

// declaracin de una cadena de hasta 255 caracteres


// declaracin de una cadena de N caracteres

La librera de manejo de cadenas string.h es un conjunto de funciones tiles para manipulacin de datos de
cadenas, entre ellas tenemos:
Func i n
strcpy(cad1,cad2)
strncpy(cad1,cad2,n)
strcat(cad1,cad2)
strncat(cad1,cad2,n)

int strcmp(cad1,cad2)

Desc rip ci n
Sustituye el contenido
de cad1 por el de cad2
Copia n caracteres de
cad2 a cad1
Agrega cad2 al final de
cad1
Agrega como mximo n
caracteres de cad2 a
cad1
Compara cad1 con
cad2
Regresa 0 si son
iguales, regresa > 0 Si
cad1 es mayor que
cad2, regresa < 0 si
cad1 es menor cad2.
La comparacin es
lexicogrfica, es decir,
de manera alfabtica,
de A a Z, y adems las
letras minsculas son
mayores que las
maysculas.

Eje mp lo
strcpy(ciudad,estado);

Sal ida
ciudad=baja california

strncpy(ciudad,estado,3);
strncpy(ciudad,baja calif,3);

ciudad=tijuanabaj

strcat(ciudad,estado);
strcat(ciudad, sonora);

ciudad=tijuanasonora

strncat(ciudad,estado,4);
strncat(ciudad,sinaloa,6);

ciudad=tijuanabaja
ciuda=tijuanasinalo

res=strncat(ciudad,estado);
res=strncat(ciudad,tijuana);
res=strncat(estado,ciudad);

res tendr valor >0


res tendr valor =0
res tendr valor <0

1 de 5

PROGRAMACIN
laboratorio
2007-1

int strcmpi(cad1,cad2)

strncmp(cad1,cad2,n)

strlen( cad )
strlwr( cad )
strupr( cad )
strrev( cad )
strset( cad, caracter)

Compara cad1 con


cad2 y regresa los
mismos
resultados
considerandoa
maysculas
y
minsculas iguales.
Compara n caracteres
de cad1 con cad2.
Regresa los mismos
valores que strcmp.

res=strncat(ciudad,estado);
res=strncat(ciudad,TIJUANA);
res=strncat(estado,ciudad);

res tendr valor >0


res tendr valor =0
res tendr valor <0

res=strncat(ciudad,tij.bc,3);

Determina la longitud
de la cadena.
Convierte la cadena a
minsculas
Convierte cadena1 a
mayusculas
Invierte la cadena
Rellena toda la cadena
con el caracter x
especificado

res=strlen(ciudad);
res=strlen(UABC);
strlwr(ciudad);

res tendr valor 0. Porque


las 3 primeras letras son
iguales
res tendr valor diferente
a 0 porque las 5 primeras
letras no son iguales.
res=7
res=4
ciudad=tijuana

strlupr(ciudad);

ciudad=TIJUANA

strrev(ciudad);

ciudad=anaujit
ciudad=xxxxxxx

res=strncat(ciudad,tecate, 5);

strset(ciudad.x);

VALIDACIN DE UNA CADENA


La validacin de una cadena significa aceptar exclusivamente letras para capturar una palabra, y agregar el espacio
si queremos validar la captura de una frase. Igualmente se puede validar la captura de un nmero aceptando
nicamente dgitos.
Para declarar una cadena vaca sin caracteres se inicializa con el fin de cadena \x0 en la posicin cero.
Para agregar la opcin de corregir en la captura, entonces debemos validar la tecla BackSpace, cuyo caracter ASCII
es el nmero ocho.
EJEMPLO #1. VALIDACIN EN MODO TEXTO
/ / V A LI D ACI N E N MO D O T E X T O
# i nc lu d e <i o st re a m. h >
# i nc lu d e < st d io .h >
# i nc lu d e < st dl ib .h >
# i nc lu d e <c o ni o. h>
# i nc lu d e < st r i ng . h>
# i nc lu d e <c t y p e . h>
# de f i ne E NT E R 1 3
# de f i ne B kS p c 2 7
int c a p t u ra E nt e r o( ) {
int x= w he re x( ) , y = wh e r e y ( ) ;
c ha r t e c la , c a d[ 4 0] ;
int l o ng Ca d;
c a d[ 0 ] =\ x 0 ;
do {
g ot o xy ( x,y ) ;
c lre ol ( ) ;
p r int f( % s ,c a d) ;
t e c la =g e t c h( ) ;

2 de 5

PROGRAMACIN
laboratorio
2007-1

lo ng Ca d =st rl e n ( c a d ) ;
if ( i sd ig i t ( t e c la ) || t e c la = =- && l o ng Ca d = =0 ) {
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = =B kSp c && l o ng Ca d> 0)
c a d[- - l o ng Ca d ] =\ x 0 ;
} w hil e ( t e c la ! =E N T E R || lo ng Ca d = =0 ) ;
re t u r n a t o i( c a d) ;
}
int c a p t u ra E nt e r oP o sit i vo ( ) {
int x= w he re x( ) , y = wh e r e y ( ) ;
c ha r t e c la , c a d[ 4 0] ;
int l o ng Ca d;
c a d[ 0 ] =\ x 0 ;
do {
g ot o xy ( x,y ) ;
c lre ol ( ) ;
p r int f( % s ,c a d) ;
t e c la =g e t c h( ) ;
lo ng Ca d =st rl e n ( c a d ) ;
if ( i sd ig i t ( t e c la ) ) {
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = =B kSp c && l o ng Ca d> 0)
c a d[- - l o ng Ca d ] =\ x 0 ;
} w hil e ( t e c la ! =E N T E R || lo ng Ca d = =0 ) ;
re t u r n a t o i( c a d) ;
}
floa t c a p t u ra R e a l( ) {
int x= w he re x( ) , y = wh e r e y ( ) ;
c ha r t e c la , c a d[ 4 0] ;
int l o ng Ca d;
do {
g ot o xy ( x,y ) ;
c lre ol ( ) ;
p r int f( % s ,c a d) ;
t e c la =g e t c h( ) ;
lo ng Ca d =st rl e n ( c a d ) ;
if ( i sd ig i t ( t e c la ) || t e c la = =- && l o ng Ca d = =0 ) {
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = = . & & ! p u nt o ) {
p u nt o = 1;
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = = B kS p c & & l o ng Ca d > 0) {
p u nt o =c a d [- - l o ng Ca d ]= = . ? 0: p u nt o;
c a d[l o ng Ca d ]= \ x 0 ;

3 de 5

PROGRAMACIN
laboratorio
2007-1

}
} w hil e ( t e c la ! =E nt e r || l o ng Ca d = =0 ) ;
re t u r n a t o f( c a d ) ;
}
floa t c a p t u ra R e a l( ) {
int x= w he re x( ) , y = wh e r e y ( ) ;
c ha r t e c la , c a d[ 4 0] ;
int l o ng Ca d;
do {
g ot o xy ( x,y ) ;
c lre ol ( ) ;
p r int f( % s ,c a d) ;
t e c la =g e t c h( ) ;
lo ng Ca d =st rl e n ( c a d ) ;
if ( i sd ig i t ( t e c la ) ) {
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = = . & & ! p u nt o ) {
p u nt o = 1;
c a d [l on g Ca d + + ] =t e c la ;
c a d [l on g Ca d ] = \ x 0 ;
}
if ( t e c la = =B kSp c && l o ng Ca d > 0) {
p u nt o =c a d [- - l o ng Ca d ]= = . ? 0: p u nt o;
c a d[l o ng Ca d ]= \ x 0 ;
}
} w hil e ( t e c la ! =E nt e r || l o ng Ca d = =0 ) ;
re t u r n a t o f( c a d ) ;
}
vo id ma y u sc u la s( c ha r c a d) {
int x= w he re x( ) , y = wh e r e y ( ) ;
c ha r t e c la ;
int l o ng Ca d;
( c a d) = ;
do {
g ot o xy ( x,y ) ;
c lre ol ( ) ;
p r int f( % s , c a d) ;
t e c la =g e t c h( ) ;
lo ng Ca d =st rl e n ( c a d) ;
if ( i sa l nu m( t e c la ) ) {
( c a d) [l o ng Ca d+ + ] =t ou p p e r( t e c la ) ;
( c a d) [l o ng Ca d] = NU LL ;
}
if ( t e c la = =B kSp c && l o ng Ca d > 0)
( c a d) [- - lo ng Ca d ] =NU L L;
} w hil e ( t e c la ! =E N T E R || lo ng Ca d = =0 ) ;
}

4 de 5

PROGRAMACIN
laboratorio
2007-1

/ / Fu nc i n P ri nc ip a l
vo id ma i n( v oi d) {
int x;
floa t y ;
c ha r c a d e na ;
c lr sc r( ) ;
p r int f( E nt e r o: ) ;
x =c a p t u ra E nt e r o( ) ;
p r int f( \ nE l nu me r o c a p t u ra d o e s: % d\ n , x) ;
p r int f( E nt e r o P o s it i v o: ) ;
x =c a p t u ra E nt e r oP os ( ) ;
p r int f( \ nE l nu me r o c a p t u ra d o e s: % d\ n , x) ;
p r int f( R e a l: ) ;
y =c a p t u ra R e a l( ) ;
p r int f( \ nE l nu me r o c a p t u ra d o e s: % . 4f\ n ,y ) ;
p r int f( R e a l P o sit i vo: ) ;
y =c a p t u ra R e a lP os ( ) ;
p r int f( \ nE l nu me r o c a p t u ra d o e s: % . 4f\ n ,y ) ;
p r int f( Ca de na Ma y u sc u la s: ) ;
ma y u sc u la s( w he re x( ) ,w he re y ( ) ,& c a de na ) ;
p r int f( \ n La c a d e na c a p t u ra da e s: % s \ n , c a de na ) ;
getch();
}

ACTIVIDAD
1. Realizar un programa que dado un numero entero N entre 2 y 20 tomarlo como una base numrica, y realice lo
siguiente:
a. Conversin de base 10 a base N.
b. Conversin de base N a base 10.
Validar para que no se introduzcan dgitos que no pertenezcan al sistema a utilizar.
Salir del programa al presionar la tecla ESC una vez realizada la conversin, si se presiona la tecla ENTER
continuar realizando conversiones (preguntar si desea capturar otra base N)
Dgitos a utilizar:
0

10

11

12

13

14

15

16

17

18

19

5 de 5

You might also like