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; }