Page 67

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 las que 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 aquellas declaradas 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 las caracterí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, el string se guardará de la siguiente forma:

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:

El código ASCII de 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 que su 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 :

Curso de iniciación al lenguaje C  

#include <stdio.h> main() printf("Bienvenido a la Programación en lenguaje C \n"); return 0; { } es mucho /* este es un comentario cor...