CADENAS DE TEXTO

Páginas: 6 (1432 palabras) Publicado: 23 de noviembre de 2014
Cadenas de texto (strings)
Introducción
Funciones de manejo de cadenas
Arrays de cadenas
Recorrido de cadenas con punteros

 
 
Introducción
Vamos ahora a ver cómo manejar texto con C. Para empezar, es preciso decir que existe un tipo string como en otros lenguajes, pero no existe un tipo de datos específico para almacenar texto, sino que se utilizan arraysde char. Funcionan igual quelos demás arrays con la diferencia de que ahora se manejan letras en vez de números. Se les llama cadenas, strings o tiras de caracteres y  a partir de ahora les llamaremos cadenas.
Para declarar una cadena se hace como en el caso de un array. Por ejemplo, si queremos declarar una cadena de longitud 20 caracteres se haría:
char texto[20];
Al igual que en los arrays, no podemos entoncesintroducir más de 20 elementos en la cadena. Vamos a ver un ejemplo para mostrar el nombre del usuario en pantalla:
#include

main()
{
char nombre[20];

printf( "Introduzca su nombre (20 letras máximo): " );
scanf( "%s", nombre );
printf( "\nEl nombre que ha escrito es: %s\n", nombre );
}
Obsérvese que en la sentencia scanf no se usa el símbolo & delante de nombre. No hace falta porque setrata de un array, de modo que escribir el nombre del array es equivalente a poner &nombre[0].
También puede llamar la atención sobre la forma de imprimir el array. Con sólo usar %s ya se imprime su totalidad. Ya veremos esto más adelante.
Por si alguien está acostumbrado a programar en otro lenguaje es preciso hacer notar que en C no se puede hacer esto:
#include

main()
{
chartexto[20];

texto = "Hola";
}
Es interesante saber cómo funciona una cadena por dentro, por eso vamos a ver primero cómo se inicializa:
#include

main()
{
char nombre[] = "Gandalf";

printf( "Texto: %s\n", nombre );
printf( "Tamaño de la cadena: %i bytes\n", sizeof nombre );
}
Resultado al ejecutar:
Texto: Gandalf
Tamaño de la cadena: 8 bytes
Curiosamente la respuesta nos dice que"Gandalf" ocupa 8 bytes. Como cada elemento char ocupa un byte eso quiere decir que la cadena tiene 8 elementos, a pesar de que "Gandalf" sólo cuenta con 7 letras. La razón de esta aparente paradoja estriba en que la cadena tiene como carácter final el símbolo '\0', cuyo significado es "fin de cadena". De esta forma, cuando queremos escribir la cadena basta con usar %s y el compilador sabe cuántoselementos debe escribir: hasta que encuentre '\0'.
El programa anterior sería equivalente a:
#include

main()
{
char nombre[] = { 'G', 'a', 'n', 'd', 'a', 'l', 'f', '\0' };

printf( "Texto: %s\n", nombre );
printf( "Tamaño de la cadena: %i bytes\n", sizeof nombre );
}
Aquí ya se observa claramente que nombre tiene 8 elementos. Pero, ¿qué pasaría si no pusiéramos '\0' al final?#include

main()
{
char nombre[] = { 'G', 'a', 'n', 'd', 'a', 'l', 'f' };

printf( "Texto: %s\n", nombre );
printf( "Tamaño de la cadena: %i bytes\n", sizeof nombre );
}
En mi ordenador se obtiene:
Texto: Gandalf-
Tamaño de la cadena: 7 bytes
Pero en otro después de "Gandalf" puede aparecer cualquier cosa. Lo que aquí sucede es que printf no encuentra el símbolo '\0' y no sabe cuándodejar de imprimir. Afortunadamente, cuando introducimos una cadena se hace de la primera forma y el C se encarga de poner el símbolo al final.
Es importante no olvidar que la longitud de una cadena es la longitud del texto más el símbolo de fin de cadena. Por eso cuando definamos una cadena tenemos que reservarle un espacio adicional. Por ejemplo:
char nombre[8] = "Gandalf";

 
Funciones demanejo de cadenas
Existen unas cuantas funciones el la biblioteca estándar de C para el manejo de cadenas:
strlen
strcpy
strcat
sprintf
strcmp
Para usar estas funciones en nuestro programa hay que añadir la directiva:
#include
 

strlen
size_t *strlen(const char *cadena);
Esta función devuelve el número de caracteres que tiene la cadena (sin contar el '\0'). 
#include
#include...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Cadenas De Texto
  • Arrays y cadenas de texto
  • Manejo de cadenas de texto
  • Arrays y cadenas de texto
  • Cadenas
  • Cadena
  • Cadena
  • cadena

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS