Caracteres

Anuncio
Caracteres
27
Un carácter es un tipo de dato simple que
representa letras, caracteres especiales. Estos datos
son representados por medio del código ASCII.
American Standard Code for Information
Interchange compuesto por un conjunto de 256
códigos que representan caracteres letras, números
y caracteres de acuerda a la siguiente tabla
Código ASCII
28
getchar, putchar y fflush
29
Las funciones getchar y putchar se usan para la
lectura y escritura de caracteres
Esta funciones son parte de la librería stdio.h
Función
Descripción
C = getchar(); lee un carácter del teclado
putchar(C);
imprime un carácter en pantalla
fflush(stdin);
al lee un carácter del teclado generalmente lo terminamos
con return lo cual provoca que este código quede
almacenado y en la siguiente lectura lo tome como el dato
de entrada. Esta función elimina este problema
Ejemplo
30
#include <stdio.h>
void main(void)
{
char c1,c2,c3 = '$‘;
printf(“\n Ingrese un carácter : ”);
c1 = getchar();
putchar(c1);
pritnf(“\n”);
fflush(stdin);
printf(“\n Ingrese otro carácter : ”);
scanf(“%c”,&c2);
printf(“caracter c2 = %c, c3 = %c”,c2,c3);
}
ctype.h
31
Función
isdigit(p);
isalpha(p);
islower(p);
isupper(p);
tolower(p);
toupper(p);
Explicación
Regresa 1 si p es un dígito y 0 en caso
contrario
Regresa 1 si p es una letra y 0 en caso
contrario
Regresa 1 si p es una letra minúscula y 0 en
caso contrario
Regresa 1 si p es una letra mayúscula y 0 en
caso contrario
Convierte de mayúscula a minúscula
Convierte de minúscula a mayúscula
Ejemplo
32
#include <stdio.h>
void main(void)
{
char c;
printf(“\n Ingrese un carácter : ”);
c = getchar();
if(isdigit(c))
printf(“%c es un digito\n”,c);
else printf(“%c No es un digito\n”,c);
if(isalpha(c))
printf(“%c es una letra\n”,c);
else printf(“%c No es una letra\n”,c);
if(islower(c))
printf(“%c es minuscula y su mayuscula es %c”,c,
toupper(c));
}
Definición de una cadena de
caracteres
Una cadena de caracteres se define como un arreglo:
char cadena[] = “Hola”;
Tipo de variable
Cadena de caracteres
Nombre de la variable
También se puede definir como:
char cadena[] = {‘H’, ’o’, ’l’, ’a’, ‘\0’};
La siguiente definición no se asigna un contenido inicial a
la cadena, así que es necesario especificar el tamaño
char cadena [80];
// incluyendo \0
Asignación de Valores
La asignación de valores iniciales a una cadena se
puede realizar en su declaración.
char
char
char
char
cadena[5] = “Hola”;
cadena[] = {‘H’,’o’,’l’,’a’,’\0’};
cadena2[10] = “Hola”;
cadena3[] = “UASLP”;
Lo siguiente no se valido:
cadena2 = “Hola”;
cadena3 = cadena2;
Elementos de la cadena
Para acceder a un carácter de una cadena se
utiliza el operador [ ] como en cualquier otro
arreglo.
char cadena[] = “Gato”;
char caracter;
caracter = cadena[1];
cadena[0] = ‘C’;
cadena[3] = ‘\0’;
// Acceso al segundo elemento
// Modificacion del primer caracter
// Acortar la cadena a Gat
Lectura y escritura de cadenas de
caracteres
Las funciones de biblioteca printf y scanf
proporcionan el especificador de conversión %s
para escribir y leer una cadena
char nombre[30];
printf(“Cual es tu nombre : ”);
scanf(“%s”, nombre);
Algunas funciones para cadenas de la
librería estándar <string.h>
Función
Descripción
strlen(s)
Regresa tamaño cadena
memset(s,c,n)
Llena la cadena s con n caracteres c
strlwr(s)
Regresa cadena convertida a minúsculas
strupr(s)
Regresa cadena convertida a MAYUSCULAS
strcpy(s1,s2)
Copia cadena s1 en s2, es decir s1 = s2
s1 = strdup(s)
Regresa copia cadena s, es decir s1 = s
strcat(s1,s2)
Concatena cadenas e.g. s1 = s1 + s2
strcmp(s1,s2)
Regresa cero si s1 es igual a s2,
positivo o negativo si s1 es mayor o menor
strchr(s,c)
Busca el carácter c dentro de la cadena s
strstr(s1,s2)
Busca la cadena s1 dentro de la cadena s2
Programa que copia una cadena de caracteres
#include<stdio.h>
#include<string.h>
int main ()
{
char string1[ ] = "Hello, UASLP!";
char string2[20];
strcpy(string2, string1);
printf("La frase es: %s\n\n",string1);
printf("La frase es: %s\n\n",string2);
system("pause");
return 0;
}
Programa que compara dos cadenas de
caracteres
#include<stdio.h>
#include<string.h>
int main ()
{
char string3[] = "Esta es solo";
char string4[30];
strcpy(string4, string3);
if(strcmp(string3, string4) == 0)
printf("Las cadenas son iguales\n");
else
printf("Las cadenas son diferentes\n");
system("pause");
return 0;
}
Programa que concatena dos cadenas
de caracteres
#include<stdio.h>
#include<string.h>
int main ()
{
char string5[] = "Hola, ";
char string6[] = "UASLP!";
printf("%s\n", string5);
strcat(string5, string6);
printf("%s\n", string5);
system("pause");
return 0;
}
Programa que calcula la longitud de una cadena
de caracteres
#include<stdio.h>
#include<string.h>
int main()
{
char string7[] = “Diaz De Leon Aguilar Ernesto Alfonso";
int longitud;
printf("Mi nombre es: %s\n",string7);
longitud = strlen(string7);
printf("\n\nLa
longitud);
system("pause");
return 0;
}
longitud
de
mi
nombre
es:
%i\n\n\n",
Programa que imprime una cadena de
caracteres en orden inverso
#include<stdio.h>
#include<string.h>
int main ()
{
char array[50]="Doroteo Arango"; char a[50];
int i,length;
length = strlen(array);
printf("%s\n\n",array);
for(i=1; i <= length; i++)
a[i-1] = array[length-i];
a[length] = '\0';
printf("\n%s\n\n",a);
system("pause");
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char nombre_completo[50], nombre[20], apellido1[30],apellido2[30];char tmp[50];
printf("\n\nCual es tu primer nombre: ");
scanf("%s", nombre);
printf("\n\nCual es tu primer apellido: ");
scanf("%s", apellido1);
printf("\n\nCual es tu segundo apellido: ");
scanf("%s", apellido2);
strcpy(
strcat(
strcat(
strcat(
strcat(
printf(
nombre_completo, nombre );
nombre_completo, " " );
nombre_completo, apellido1 );
nombre_completo, " " );
nombre_completo, apellido2 );
"\n\nEl nombre completo es: %s.....\n\n", nombre_completo );
strcpy(nombre_completo,strupr(nombre_completo));
printf( "\n\nEl nombre completo es: %s.....\n\n", nombre_completo);
strcpy(nombre_completo,strlwr(nombre_completo));
printf( "\n\nEl nombre completo es: %s.....\n\n", nombre_completo);
}
Ejercicio 1
44
Crear un programa que tome una frase e
imprima cada una de las palabras en una
línea:
Introduzca una frase:
La programación en C es divertida
Resultado:
La
programación
en
C
es
divertida
#include <stdio.h>
int main()
{
char frase[100];
int i = 0;
printf( "Escriba una frase: " );
scanf(“%s”,frase);
Solución
45
printf( "Resultado:\n" );
while ( frase[i] != '\0' )
{
if ( frase[i]==' ' )
printf( "\n" );
else
printf( "%c", frase[i] );
i++;
}
system( "pause" );
return 0;
}
Ejercicio 2
46
Escribe un programa que después de introducir una
palabra convierta alternativamente las letras a
mayúsculas y minúsculas:
Introduce una palabra: chocolate
Resultado: ChOcoLaTe
#include <stdio.h>
47
int main() {
char palabra[100];
int i = 0;
printf( "Escribe una palabra: " );
scanf("%s", palabra );
printf( "Resultado:\n" );
while ( palabra[i]!= '\0' ) {
if ( i%2 ==0 )
printf( "%c", toupper( palabra[i] ) );
else
printf( "%c", tolower( palabra[i] ) );
i++;
}
printf( "\n" );
system( "pause" );
return 0;
}
Descargar