Carácter

Un carácter es el átomo de los programas de computadora, un carácter es un símbolo que puede ser una letra del alfabeto o un carácter especial.

Un carácter ocupa 8 bits en memoria, y existen 256 caracteres diferentes. Cada carácter se lo codifica en un número entero, es  decir, que cada carácter tiene su correspondiente representación entera,  el código ASCII es precisamente esto. Por ejemplo el carácter ‘a’ tiene como código ASCII el entero 97. Para ver todos códigos ASCII véase el anexo A.

Cadenas

Una cadena o cadena de caracteres nos es más que una serie de caracteres manipulados como una unidad. Si asemejamos una cadena al lenguaje castellano sería como una palabra, que es un conjunto de sílabas y vocales en donde cada una de estas viene a ser una carácter.

Visto desde otro punto vendría a ser un arreglo de caracteres.
Una cadena puede contener cualquier carácter, puede almacenar un nombre propio una dirección, es decir, lo que nosotros precisemos.

Declaración

Una cadena se la define de la siguiente manera

char cadena[20];

La cadena anterior puede contener un máximo de 20 caracteres.

Inicialización

Se puede inicializar una cadena de la siguiente manera:

cadena = "Hola" ;

Cualquier valor que se le asigne a una cadena va entre comillas dobles " ", como en el ejemplo anterior "Hola" esta entre comillas dobles.

Una cadena siempre finaliza con el carácter de fin de cadena ‘\0’, que siempre se añade al final automáticamente, en el ejemplo anterior se añade al final de “Hola” el carácter de fin de cadena.

También  podemos considerar a una cadena como un arreglo de caracteres, y se  puede inicializar de la siguiente manera:

cadena = { ‘H’, ‘o’, ‘l’, ‘a’ } ;

El arreglo de caracteres se  vería de esta  forma:

‘H’

‘o’

‘l’

‘a’

‘\0’

0

1

2

3

4

Nótese que en la posición 4 se aumenta el fin de cadena

Ejemplo 9.1

Se desea tener un programa que sea amable con el usuario, el programa deberá conocer el nombre del usuario y responderle con un mensaje amigable.

#include <iostream.h>

void main()
{
    char nombre[30];
    cout<<"¿Cuál es tu nombre?";
    cin>>nombre;
    cout<<"Que tengas un buen día "<<nombre;
}


En el ejemplo anterior el mensaje "¿Cuál es tu nombre?" es una cadena pues esta entre comillas. También es una cadena la variable nombre que recibirá un valor desde teclado.

Operaciones con Cadenas

Existen muchas operaciones que se pueden realizar utilizando cadenas, la mayoría de la operación que podemos requerir se encuentran ya a nuestra disposición dentro de la librería string.h

Longitud

La longitud de una cadena la podemos conocer utilizando la función strlen.

Sintaxis

strlen( cadena ) ;

Ejemplo 9.2

#include <iostream.h>#include <string.h>

void main()
{
    char nombre[30];
    int tamano;
  cout<<"¿Cuál es tu nombre?\n";
  cin>>nombre;
  tamano = strlen( nombre );
    cout<<"Tu nombre tiene "<<tamano<<”letras”;
}

Comparación

Para saber si dos cadenas son exactamente iguales utilizamos la función strcmp.

Sintaxis

strcmp ( cadena1, cadena2 );

Esta función devuelve un valor de acuerdo al resultado de la comparación.

Devuelve:     

                   0                 si la dos cadenas son exactamente iguales

                   Mayor a 0      si la cadena1 es mayor a la cadena2

                   Menor a 0      si la cadena1 es menor que la cadena2

Ejemplo 9.3

#include <iostream.h>
#include <string.h>

void main()
{
    char contrasena[30], reContrasena[30];
    int resultado;
    cout<<"Escribe tu contraseña\n";
    cin>>contrasena;
    cout<<"Re escribe tu contraseña\n";
    cin>>reContrasena;
    resultado = strcmp(contrasena, reContrasena);
    if ( resultado == 0 )
        cout<<"La contraseña es aceptada";
    else

        cout<<"La contraseña no coincide";

}

Copia

Podemos reflejar todo el contenido de una cadena a otra, en otras palabras la copiamos tal cual, para esto utilizamos la función strcpy.

Sintaxis

         strcpy( cadenaDestino, cadenaOrigen );

Todo el contenido de la cadenaOrigen se copia a la cadenaDestino, si esta última tuviera algún valor este se borra.

Ejemplo 9.4

#include <iostream.h>
#include <string.h>

void main()
{
char nombre[30], apellido[30];
cout<<"¿Cuál es tu nombre? \n";
cin>>nombre;
cout<<”¿Cuál es tu apellido paterno\n”;
cin>>apellido;
strcat(nombre, “ “); //Se le añade un espacio en blanco
strcat(nombre, apellido);
cout<<”Tu nombre completo es “<<nombre;
}

Concatenación

Podemos juntar o concatenar dos cadenas una a continuación de la otra. Utilizamos la función strcat.

Sintaxis

         strcat( cadenaDestino, cadenaOrigen );

Todo el contenido de la cadenaOrigen se añade a continuación de la cadenaDestino, si esta última contiene algo entonces al final contendrá lo que contenía más el contenido de la cadenaOrigen.

Ejemplo 9.5

#include <iostream.h>
#include <string.h>

void main()
{
    char origen[30], copia[30];
    cout<<"¿Qué día es hoy? \n";
    cin>>origen;
    strcpy(copia, origen);
    cout<<”Hoy es “<<copia;
}

Ejemplo 9.6

Escriba una función que permita conocer la longitud de una cadena. La función deberá llamarse longitud

#include <iostream.h>
#include <string.h>

int longitud(char cadena[])
{
   int acum = 0;
   while( cadena[acum] != '\0' ) //mientras no sea fin de cadena                 acum++;
   return acum;
}

void main()
{
    char nombre[30];
    cout<<"¿Cuál es tu nombre?\n";
    cin>>nombre;
    cout<<"Tu nombre tiene "<<longitud(nombre)<<" letras";
}