Manejo De Cadenas En C

Páginas: 18 (4303 palabras) Publicado: 12 de agosto de 2011
CAPITULO 8: FUNCIONES DE MANEJO DE STRINGS

 
1. INTRODUCCION
Si bien ya hemos realizado variadas operaciones de manejo de string , dada su importancia, pues son cuando menos el medio de comunicación de los programas con el operador, trataremos acá de sintetizar los conceptos relativos a los mismos, y resumir aquellas funciones ya vistas, con el agregado de otras nuevas.
La mayoría de lasque veremos a continuación, responden a la norma ANSI C, por lo que serán independientes del compilador que usemos. Estas tienen sus prototipos definidos en los archivos de encabezamiento stdio.h, stdlib.h, string.h y ctype.h.
Agregaremos tambien algunas que caen fuera de la norma, por lo que su portabilidad a otros compiladores distintos al que fueron extraidas, no es segura. Seran aquellasdeclaradas en Headers no citados arriba. Sin embargo, hoy en día practicamente todos los compiladores las traen ó tienen otras similares, con nombres parecidos. De cualquier forma, antes de compilar los ejemplos aquí suministrados, en caso de encontrarse alguna de estas, verifique con su manual de Libreria la existencia y compatibilidad de la misma.
Refresquemos, antes de comenzar, algunas de lascaracterísticas básicas de los strings. Estos pueden aparecer en un programa como una constante simbólica, de la forma siguiente:
#define TITULO "Capitulo 9"
en este caso, en cada lugar donde aparece TITULO se reemplazará esta constante simbólica por la DIRECCION de la C del texto con que fué definida .
Así, será correcto escribir:
char *p = TITULO ;
Recordemos tambien que en la memoria, elstring se guardará de la siguiente forma:
[pic]
 
Donde los números son el código ASCII que representa a cada caracter del string , en particular , note que 20 corresponde al espacio , terminandose con un NULL (código 0 ) .
A los efecttos prácticos, para las funciones de manejo de los mismos, es como si en realidad hubieramos memorizados directamente los caracteres:
[pic]
 
El código ASCIIde los caracteres imprimibles vá entre el 31 y el 127 , reservándose los códigos entre el 0 y 30 , para los caracteres de control (retorno de carro, avance de linea, tabulador, etc).
Si en cambio , hubieramos escrito el string de una manera ortográficamente más correcta :
#define TITULO "Capítulo 9"
(con la i acentuada) estaríamos introduciendo un caracter del conjunto ASCII Extendido , ya quesu código supera a 127 y está representado por 173 .
Lo correcto en este caso sería definir , aunque muchos compiladores ya lo presuponen por omisión, para asegurar la portabilidad :
unsigned char *p = TITULO ;
de esta forma se garantiza que el alcance de la variable sea de 255 , ó en su defecto :
int *p = TITULO ;
Es correcto tambien declarar el puntero , y asignarlo posteriormente
char *p;

p = TITULO ;
Esta asignación solo dá , al contenido del puntero la dirección del string global predefinido .
Sin embargo , si en lugar de un puntero deseamos usar un array , en este caso es correcta la inicialización del mismo , pero no así su asignación posterior:
char nombre[] = TITULO ; /* Correcto */

.................

char nombre[11] ;

nombre = TITULO ;/* Incorrecto */
Ya que si bien, el nombre de un array es un puntero , es de índole constante , negándose el compilador a cambiar su dirección.
Si estuvieramos en el caso de ingresar un string variable , por ejemplo leyendolo desde el teclado , podríamos utilizar un array, de la siguiente forma :
char nombre[128] ;

scanf("%s" , nombre ) ;
en este caso la única precaución es que , elarray tenga suficiente longitud para albergar a cualquier string escrito . En el caso de trabajar bajo DOS, basta con darle 128 caracteres, ya que el buffer de lectura de ese sistema operativo no supera dicha cantidad .
Hay que hacer notar que la longitud de un string puede ser mayor que la del texto válido contenido , ya que este termina donde se encuentra el NULL , quedando los bytes sobrantes...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Manejo de Cadenas
  • Cadenas C++
  • Cadenas c#
  • Cadenas En c#
  • Manejo de la cadena de suministros
  • Manejo de la cadena de suministro
  • Protocolo De Manejo Cadena De Frio
  • C++ Cadena De Caracteres

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS