cadenas de caracteres

Páginas: 5 (1196 palabras) Publicado: 30 de marzo de 2013

Cadenas de Caracteres
Se denomina cadena de caracteres o string a todo dato compuesto por una serie de caracteres ASCII formando una tira contigua.
Esta contigüidad lógica, es respetada físicamente por el traductor y la máquina, ya que también se almacenan los caracteres en memoria en posiciones consecutivas de un byte (lo que ocupa un char). Esto tendrá, como veremos importantesconsecuencias en su manipulación.
En otros lenguajes de programación, existe un tipo de dato básico específico, no ocurriendo lo mismo en C, donde son un caso particular de los arrays que estudiaremos con posterioridad en el tema siguiente.
Hasta ahora, sólo hemos manejado cadenas constantes, en instrucciones de salida, como por ejemplo:
        printf( "Introduce la base del triangulo:");
Como se ve,estas cadenas constantes deben enunciarse entre comillas dobles, mientras que los caracteres constantes (tipo char) se ponen entrecomillas simples, como p.ej 
        putchar('a');
En el presente tema, estudiaremos todo lo relativo a la declaración y manipulación de cadenas.
Declaración de una cadena
 La sentencia de declaración de una cadena es como sigue:
        charnombre-de-la-cadena[tamaño];
El tamaño indica el número máximo de caracteres que puede almacenar la cadena, lo cual no significa que deba estar obligatoriamente completa, por lo que nunca será un indicativo del tamaño de lo que realmente almacena en un momento determinado.
También se puede expresar la longitud de manera implícita con declaraciones como la siguiente:
        char nombre[  ]="Maria Jesus";
Es importanteseñalar que, internamente, cada carácter de una cadena está indexado por un número que va de 0 a tamaño-1, y que la posición última ocupada contendrá siempre el carácter de terminación '\0'. Esta es la única forma de conocer dónde termina en cada momento la cadena, con una marca de fin. Por ejemplo:
        char nombre[7]="Pepe";
Será almacenado internamente como:
P
e
p
e
\0
 
  

0
12
3
4
5  
6
Obsérvese lo siguiente:
el primer carácter está en la posición 0
el último en la posición 3
el tamaño real de la cadena almacenada es de 4 caracteres
el tamaño ocupado en total es de 5 posiciones
OJO: la ñ es un carácter considerado especial en el código ASCII por lo que las funciones estándar tienen un comportamiento anómalo con él, considerado para todos los efectos uncarácter especial. Usando djgpp se puede aludir como el carácter 'ñ' ó 'Ñ', pero en gcc ni siquiera eso, ya que se obtiene como una combinación de teclas y requiere un tratamiento especial.
Manipulación dual de una cadena
Una cadena puede ser manipulada en un programa o función de dos maneras diferentes:
como un dato unitario: una cadena puede ser leída, escrita, copiada, comparada...entera
comouna colección de datos simples: cada carácter que forma la cadena puede ser manipulado de manera individual, como un dato char simple
Además, de las características de almacenamiento interno de una cadena anteriormente vistas, se desprenden una serie de consecuencias interesantes:
el nombre de la cadena, tal y como aparece en la declaración, y sin corchetes equivale a un puntero a la posicióninicial de la cadena, esto es:

        nombre        equivale a        &nombre[0]
Es por esta razón que al leer una cadena con scanf no es necesario indicar el ampersand, ya que el propio nombre de la variable es interpretado por esta función como el puntero a su primer carácter:
        scanf("%s",nombre);
al ser esto así, la dirección de los siguientes caracteres se puede obtener sumando undesplazamiento entero al nombre:
        nombre++ será el segundo carácter de la cadena nombre
        nombre + 3   será el carácter situado 3 posiciones más allá del primer carácter

NOTA: la expresión nota++ es peligrosa, pues modifica el puntero, pasando a apuntar a partir de ahí al segundo carácter como comienzo de la cadena
También, si recorremos la cadena con un puntero, sabremos...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Cadenas de caracteres
  • Cadenas de caracteres
  • cadena de caracteres
  • cadenas de caracteres
  • Cadena De Caracteres
  • Cadenas de caracteres
  • Cadenas De Caracteres
  • Ejercicios De Cadena De Caracteres

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS