Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Cadenas de Caracteres Cadena de caracteres En C una cadena es un vector de caracteres que termina con el carácter nulo ( '\0' ). El valor de la cadena es la dirección de su primer carácter. Por lo tanto, es apropiado decir que una cadena es un puntero (al 1er. elemento). Cadena de caracteres Una cadena puede recibir valor en su declaración, ya sea un vector o una variable del tipo char * Crea el vector color de 5 elementos. Sus elementos son los caracteres 'R', 'o', 'j', 'o', '\0'. Cadena de caracteres Una cadena puede recibir valor en su declaración, ya sea un vector o una variable del tipo char * También podía declararse así: Char color [ ] = { 'R', 'o', 'j', 'o', '\0' } ; Cadena de caracteres Una cadena puede recibir valor en su declaración, ya sea un vector o una variable del tipo char * Crea el puntero PtrColor que señala a la cadena 'Rojo‘ en alguna parte de la memoria. Cadena de caracteres Una cadena puede ser asignada a un vector utilizando scanf. Ejemplo La cadena escrita por el usuario se almacena en el vector de caracteres palabra[20]. Note que no se requiere & Cadena de caracteres Una cadena puede ser asignada a un vector utilizando scanf. Ejemplo La función scanf leerá caracteres hasta encontrar un espacio, una nueva línea o un indicador de fin de archivo. Qué pasa si se ingresan más de 19 caracteres? Manejo de caracteres Prototipo Descripción de la función int isdigit(int c) Regresa un valor verdadero si c es un dígito y 0 (falso) si no. int isalpha(int c) Si c es una letra devuelve verdadero y 0 si no. int isalnum(int c) Si c es un dígito o una letra devuelve verdadero y 0 si no. int ispunct(int c) Devuelve verdadero si c es un carácter de impresión distinto de un espacio, un dígito o una letra y 0 si no <ctype.h> Prototipo Descripción de la función int islower(int c) Regresa un valor verdadero si c es una letra minúscula y 0 (falso) si no. int isupper(int c) Regresa un valor verdadero si c es una letra mayúscula y 0 (falso) si no. int tolower(int c) Si c es una letra mayúscula, la retorna en minúscula; sino retorna el argumento sin modificación. int toupper(int c) Si c es una letra minúscula, la retorna en mayúscula; sino retorna el argumento sin modificación. Ver otras en <ctype.h> <ctype.h> Manejo de caracteres Funciones de conversión La librería <stdlib.h> contiene funciones muy útiles para convertir cadenas con caracteres numéricos en sus correspondientes valores. atof – atoi – atol strtod - strtol - strtoul <stdlib.h> Función atof Sintaxis Convierte una cadena de caracteres en un número en punto flotante. Si la conversión falla, el comportamiento de la función es indefinido. double atof ( const char * nPtr ) 05_FuncionesDeConversion.c <stdlib.h> Función atoi Sintaxis Convierte una cadena de caracteres en un número entero. Si la conversión falla, el comportamiento de la función es indefinido. int atoi ( const char * nPtr ) 05_FuncionesDeConversion.c <stdlib.h> Función atol Sintaxis Convierte una cadena de caracteres en un long int. Si la conversión falla, el comportamiento de la función es indefinido. long atol ( const char * nPtr ) 05_FuncionesDeConversion.c <stdlib.h> Función strtod Sintaxis Convierte la cadena nPtr a double. El primer parámetro es la cadena a convertir y el segundo parámetro retorna la posición del primer carácter, dentro de la cadena original, después de la porción convertida double strtod(const char *nPtr, char **endPtr) <stdlib.h> Función strtod Ejemplo Note que se pasa la dirección del puntero para poder modificarlo 05_FuncionesDeConversion.c <stdlib.h> Función strtol Sintaxis Convierte la cadena nPtr a long. Parámetros Cadena a convertir. Posición del primer carácter, dentro de la cadena original, después de la porción convertida. Base en la que aparece el nro. dentro de la cadena long strtol(const char *nPtr, char **endPtr, int base) <stdlib.h> Función strtol Ejemplo La base puede ser 0 (octal) o un número entre 2 y 36. 05_FuncionesDeConversion.c <stdlib.h> Función strtoul Sintaxis Convierte la cadena nPtr a unsigned long. Los parámetros son similares a los de la función strtol. Unsigned long strtoul(const char *nPtr, char **endPtr, int base) <stdlib.h> Función strtoul Ejemplo 05_FuncionesDeConversion.c <stdlib.h> Funciones de E/S Prototipo Descripción de la función int getchar(void) Toma el siguiente carácter de la entrada estándar y lo retorna como un entero. char * gets(char *s) Introduce caracteres de la entrada estándar en el arreglo s hasta que encuentra un ‘\n’ o EOF. Agrega al arreglo un carácter de terminación NULL. int putchar (int c) Imprime el carácter almacenado en c. <stdio.h> Funciones de E/S Prototipo Descripción de la función int puts(const char *s) Imprime la cadena s seguida por un ‘\n’. int sprintf(char *s, const char *format, …) Equivalente a printf, excepto que la salida se almacena en el arreglo s en vez de imprimir en pantalla. int sscanf(char *s, const char * format, …) Equivalente a scanf excepto que la entrada se lee del arreglo s en vez de leerlo desde teclado. <stdio.h> 05_LineaInvertida.c Indique si es equivalente a scanf("%s" , linea); Note que imprime el carácter directamente Es más simple que printf para imprimir cadenas de caracteres 05_VerLinea.c Note que puts agrega ‘\n’ luego de imprimir la cadena de caracteres. 05_VerLinea.c 05_sprintf.c 05_sscanf.c parte1 debe tener lugar para almacenar su valor , el del 2do. parámetro y el carácter NULL. 05_string1.c 05_string1.c Qué imprime? Esta es la biblioteca string.h strncpy no necesariamente copia el ‘\0’. Si texto no contiene 9 caracteres, se completa con caracteres NULL. 05_string1.c 05_string1.c Qué imprime? Funciones Funciones de comparación Prototipo Descripción de la función int strcmp( const char *s1, const char *s2) Compara la cadena s1 con la cadena s2. Retorna 0, un valor negativo o un valor positivo si s1 es igual, menor o mayor que s2 respectivamente int strncmp( const char *s1, const char *s2, size_t n) Idem anterior pero comparando hasta n caracteres . <string.h> -1 0 23 05_StringCMP.c Qué imprime? Funciones de búsqueda Prototipo Descripción de la función char *strchr( const char *s, int c) Localiza la primera instancia del carácter c en la cadena s. Si la encuentra retorna un puntero a c; si no, devuelve NULL. <string.h> Ejemplo 0028FF07 00000000 05_Funcionstrchr.c Funciones de búsqueda Prototipo Descripción de la función char * strrchr( const char *s, int c) Localiza la última instancia de c en la cadena s. Si encuentra c, regresa un puntero a c en la cadena s. De lo contrario retorna NULL. <string.h> Ejemplo Imprime 16 Funciones de búsqueda Prototipo Descripción de la función size_t strcspn( const char *s1, const char *s2) Determina y regresa la longitud del segmento inicial de la cadena s1 formado por caracteres no contenidos en la cadena s2. size_t strspn( const char *s1, const char *s2) Determina y regresa la longitud del segmento inicial de la cadena s1 que consiste sólo de los caracteres contenidos en la cadena s2. <string.h> 4 7 05_String2.cFunciones de búsqueda Prototipo Descripción de la función char * strpbkr( const char *s1, const char *s2) Localiza la primera ocurrencia en la cadena s1 de cualquier carácter de la cadena s2. Si encuentra un carácter de s2, regresa un puntero a dicho carácter en s1; sino retorna NULL. <string.h> Ejemplo 2 Funciones de búsqueda Prototipo Descripción de la función char * strstr( const char *s1, const char *s2) Localiza la primera ocurrencia en la cadena s1 de la cadena s2. Si la cadena es hallada, retorna un puntero a la cadena en s1; sino retorna NULL. <string.h> Ejemplo 4 Manipulación de cadenas Prototipo Descripción de la función char * strtok( const char *s1, const char *s2) Llamadas sucesivas a strtok divide la cadena s1 en tokens (partes lógicas, como palabras, en una línea de texto) separados por caracteres contenidos en la cadena s2. La 1ra.llamada tiene a s1 como 1er. argumento y las siguientes NULL. Para c/llamada regresa un puntero al token actual. Si no quedan más tokens retorna NULL. <string.h> 05_Funcionstrtok.c La 1ra. llamada se hace con el string Las siguientes tienen NULL como 1er. argumento Estos caracteres separan los tokens Salida del ejemplo anterior 05_Funcionstrtok.c Manejo de cadenas Prototipo Descripción de la función char * strerror( int errornum) Utiliza errornum para contruir una cadena de texto completa. La forma de dicha cadena es dependiente del sistema. Regresa un puntero a la cadena <string.h> Ejemplo Manejo de cadenas Prototipo Descripción de la función size_t strlen( const char * s) Retorna la cantidad de caracteres que anteceden al carácter de terminación NULL. <string.h> Funciones de memoria <string.h> Prototipo Descripción de la función void * memcpy( void *s1, const void *s2, size_t n) Copia n caracteres del objeto apuntado por s2 al objeto apuntado por s1. Regresa un puntero al objeto resultante. La función puede recibir un puntero a cualquier tipo de objeto. Si los dos objetos se superponen (son parte del mismo objeto) el resultado de la función queda indefinido. 05_memcpy.c Funciones de memoria <string.h> Prototipo Descripción de la función void * memmove( void *s1, const void *s2, size_t n) Es similiar a memcpy pero la copia se ejecuta pasando los bytes de s2 a un arreglo temporal y luego del arreglo temporal a s1. La copia se lleva a cabo como si 1ro. los bytes fueran copiados del 2do. argumento a un arreglo temporal y a continuación copiados de dicho arreglo al 1er. argumento. Esto permite copiar elementos dentro de una misma cadena. 05_memmove.c Funciones de memoria Prototipo Descripción de la función char * memcmp( const void *s1, const void *s2, size_t n) Compara los primero n caracteres de los objetos apuntados por s1 y s2. La función retorna 0, menos que 0 o más que 0 si s1 es igual, menor o mayor que s2, respectivamente. <string.h> 0 -1 1 Funciones de memoria Prototipo Descripción de la función char * memchr( const void *s, int c, size_t n) Localiza la 1ra.instancia de c (convertida a unsigned char) en los 1ros. n caracteres del objeto señalado por s. Si c es encontrado, regresa un puntero a c en el objeto. De lo contrario retorna NULL. <string.h> 05_memchr.c Funciones de memoria Prototipo Descripción de la función char * memset( void *s, int c, size_t n) Copia c (convertida a unsigned char) en los 1ros. n caracteres del objeto señalado por s. Regresa un puntero al resultado. zzzzzzzjemplo Ejemplo 05_memset.c
Compartir