12 Cadenas

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 24

Cadenas de caracteres

Cadena de caracteres o String


• Una cadena de caracteres o string es un arreglo, en el cual
todos sus elementos son de tipo char.

• Una cadena de caracteres puede se inicializada asignándole un


literal.

Por ejemplo:

char cadena[5] = “abcd”;

• Este ejemplo inicializa el string cadena con 5 elementos


(cadena[0] a cadena[4]). El quinto elemento, es el caracter
nulo ( \0 ), con el cual C finaliza todas las cadenas de
caracteres.
Cadena de caracteres o String
• Si la cadena asignada a un string es más larga que el
tamaño especificado del string, se obtiene un error en el
momento de la compilación.

Por ejemplo:

char cadena[3] = “abcd”;

• Este ejemplo daría lugar a un mensaje de error,


indicándonos que hemos excedido los límites del arreglo.
Cadena de caracteres o String
• Si la cadena asignada es más corta que el tamaño del
arreglo de caracteres, el resto de los elementos del
arreglo son inicializados a valor nulo (’\0’)

char cadena[10] = “abcd”;

cadena a b c d \0 \0 \0 \0 \0 \0
0 1 2 3 4 5 6 7 8 9
Cadena de caracteres o String
• Para leer una cadena de caracteres podemos emplear la función scanf().
Por ejemplo:
char cadena[15];
scanf(“%s”, &cadena);

Con el inconveniente que no almacena espacios en blanco contenidos en


la palabra leída.

• La función gets( ), también lee un string y la almacena en la variable


especificada. Y puede almacenar los espacios en blanco existentes en la
palabra leída.
gets(var);
Función gets( )
• La variable var, contiene todos los caracteres tecleados,
excepto el caracter de nueva línea (‘\n’), que es
automáticamente reemplazado por el caracter nulo (‘\0’),
con el cual C finaliza toda cadena de caracteres

• La función gets( ), a diferencia de la función scanf( ),


permite la entrada de una cadena de caracteres formada
por varias palabras separadas por espacios en blanco.
Actividad Grupal

Comparar el uso de scanf( ) y gets( )


para la lectura de strings
Actividad Grupal
int main()
{ char nombre [50];

printf("\n Introduce tu nombre completo:


");
fflush(stdin); // Limpia la memoria
gets(nombre);
printf("Tu nombre es %s", nombre);

printf("\n\n Introduce tu nombre


completo: ");
fflush(stdin);
scanf("%s",&nombre);
printf("Tu nombre es %s", nombre);

printf("\n\n");
system("PAUSE");
Escribir una cadena de caracteres

La función puts( ) escribe una cadena de


caracteres en pantalla, y reemplaza el caracter
nulo de terminación de cadena ( \0 ) por el
caracter nueva línea ( \n )
Actividad Grupal

Comparar el uso de printf() y puts()


para la escritura de strings.
Actividad Grupal
int main()
{ char frase[30];

printf("\n Introduce una frase : ");


fflush(stdin); // Limpia la memoria
gets(frase);

printf("La frase que escribiste es: ");


puts(frase); // Probar con puts y printf
printf("Fin del programa... ");

printf("\n\n");
system("PAUSE");
}
Cadena de caracteres
• La estructura compañera de una cadena de caracteres es el
ciclo while. La mayoría de los problemas de cadena de
caracteres son codificados con esta estructura:

int i=0;
while ( cadena[i] != ‘\0’)
{
i++;
}
• En donde el código del while se ejecutará mientras no se
llegue al fin de la cadena de caracteres.
Actividad Grupal
Define el pseudo-algoritmo y el código de la función
cuantosCaracteres, que recibe una cadena de 50
caracteres y regresa el número de caracteres “validos”
almacenados en el arreglo.
Pseudo-algoritmo: cuantosCaracteres

entero funcion cuantosCaracteres (caracter : arreglo[50])


{
var entero : indice = 0
mientras arreglo[indice] != fin de cadena
{
indice++
}
regresar (indice)
}
Solución
Actividad Grupal
int cuantosCaracteres (char A[50])
{
int i=0;
while (A[i] != ’\0’)
{
i++ ;
}
return i;
}
Actividad colaborativa
(5 minutos)

Define el pseudo-algoritmo y el código de la función


cuantasRepeticiones, que recibe una cadena de 50
caracteres y un caracter, y regresa el número veces
que se repite el caracter en la cadena.
Pseudo-algoritmo: cuantasRepeticiones

entero funcion cuantasRepeticiones (caracter : arreglo[50], caracter : x)


{
var entero : indice = 0, veces = 0
mientras arreglo[indice] != fin de cadena
{
if (x == arreglo[indice])
veces++
indice++
}
regresar (veces)
} Solución
int cuantasRepeticiones (char A[50], char x)
{
int i=0, veces=0;
while (A[i] != ’\0’)
{
if (A[i]==x)
{
veces++; Solución
}
i++ ;
}
return veces;
}
Actividad colaborativa
(5 minutos)

Escriba el procedimiento reemplazarCaracter, que


recibe una cadena de 50 caracteres y dos caracteres x
y y. El procedimiento deberá reemplazar todos los
caracteres x en la cadena por el caracter y.
void reemplazarCaracter (char cadena[50], char x, char y)
{
int i=0;
while(cadena[i] != '\0')
{
if (cadena[i] == x)
{
cadena[i] = y; Solución
}
i++;
}
}
Funciones útiles para caracteres
Librería ctype.h

Función Significado

Convierte un caracter a
toupper(caracter)
mayúscula

Convierte un caracter a
tolower(caracter)
minúscula
Funciones útiles para cadenas
Librería string.h

Función Significado

Copia la cadena fuente en la cadena


strcpy(destino,fuente)
destino

Une dos cadenas. Agrega (pega) a la


strcat(destino,fuente)
cadena destino la cadena fuente

Regresa la longitud de la cadena, es decir,


strlen(cadena) regresa un entero igual al número de
caracteres de la cadena.

Compara dos cadenas. Regresa:


• 0 = Si cadena1 es igual a cadena2
strcmp(cadena1, cadena2)
• Diferente a 0 = Si cadena1 es diferente
a cadena2
strcpy (destino, fuente)
El siguiente programa declara una cadena para
almacenar nombres de personas

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char nombre[26];
strcpy(nombre, "Francisco");
puts(nombre);
system("PAUSE");
}
strlen (cadena)
El siguiente programa lee una cadena y después la imprime
separando cada caracter con un asterisco.

int main()
{
char letrero[31];
printf("\n Dame una cadena (MAXIMO 30 CARACTERES): ");
fflush(stdin); // limpia la memoria
gets(letrero);
for(int k=0; k < strlen(letrero); k++)
{
printf("%c * ", letrero[k]);
}
printf("\n\n");
system("PAUSE"); // Frena la ejecución del programa
}

También podría gustarte