Ads 468x60px

Perfil

lunes, 17 de octubre de 2011

LIBRERÍA STRING EN C


Función memchr
void *memchr(const void *s, int c, size_t n);
Localiza la primera aparición del carácter c (convertido a unsigned char) en los primeros n caracteres (cada uno interpretado como un unsigned char) del objeto apuntado por s.
Valor de retorno:
La función retorna un puntero al carácter localizado, o un puntero nulo si el carácter no apareció en el objeto.
Ejemplo:
#include <stdio.h>
#include <string.h>

int main()
{
   char cadena[] = "Erase una vez...";
   char *puntero;

   puntero = (char *)memchr( cadena, 'a', 5 );
   printf( "%s\n", cadena);
   printf( "%s\n", puntero );

   return 0;
}
________________________________________________________________________________________________________
Función memcmp ANSI C
int memcmp(const void *s1, const void *s2, size_t n);
Compara los primeros n caracteres del objeto apuntado por s1 (interpretado como unsigned char) con los primeros n caracteres del objeto apuntado por s2 (interpretado como unsigned char).
Valor de retorno:
La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según el objeto apuntado por s1 es mayor, igual, o menor que el objeto apuntado por s2.
Ejemplo:
#include <stdio.h>
#include <string.h>

int main()
{
   char a[3] = { 82, 81, 84 };
   char b[3] = { 85, 83, 86 };
   int i;

   for( i=0; i<3; i++ )
     printf( "a[%d]=%c ", i, a[i] );
   printf( "\n" );
   for( i=0; i<3; i++ )
     printf( "b[%d]=%c ", i, b[i] );
   printf( "\n" );

   i = memcmp( a, b, 4 );
   printf( "a es " );
   if( i < 0 )  printf( "menor que" );
   else if( i > 0 )  printf( "mayor que" );
   else  printf( "igual a" );
   printf( " b\n" );

   return 0;
}
________________________________________________________________________________________________________
Función memcpy ANSI C
void *memcpy(void *s1, const void *s2, size_t n);
Copia los primeros n caracteres del objeto apuntado por s2 al objeto apuntado por s1.
Valor de retorno:
La función retorna el valor de s1. Si al copiar un objeto al otro se superponen, entonces el comportamiento no está definido.
Ejemplo:
#include <stdio.h>
#include <string.h>

int main()
{
   char a[7] = "abcdefg";
   char *ptr;
   int i;

   memcpy( ptr, a, 5 );
   for( i=0; i<7; i++ )
     printf( "a[%d]=%c ", i, a[i] );
   printf( "\n" );
   for( i=0; i<5; i++ )
     printf( "ptr[%d]=%c ", i, ptr[i] );
   printf( "\n" );

   return 0;
}
________________________________________________________________________________________________________


Función memmove ANSI C

void *memmove(void *s1, const void *s2, size_t n);
Copia los primeros n caracteres del objeto apuntado por s2 al objeto apuntado por s1.Sin embargo, se asegura de que no estén superpuestos. Por esta razón, copia los caracteres a un array/arreglo temporalmente. Después vuelve a copiar del array temporal al objeto en cuestión.
Valor de retorno:
La función retorna el valor de s1.
Ejemplo:
#include <stdio.h>
#include <string.h>

int main()
{
   char a[7] = "abcdefg";
   char *ptr;
   int i;

   memmove( ptr, a, 5 );
   for( i=0; i<7; i++ )
     printf( "a[%d]=%c ", i, a[i] );
   printf( "\n" );
   for( i=0; i<5; i++ )
     printf( "ptr[%d]=%c ", i, ptr[i] );
   printf( "\n" );

   return 0;
}
________________________________________________________________________________________________________

Función memset ANSI C

void *memset(void *s, int c, size_t n);
Copia el valor de c (convertido a unsigned char) en cada uno de los primeros n caracteres en el objeto apuntado por s.

Valor de retorno:

La función retorna el valor de s.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char c = 'F';
   char *s;
   int i;
 
   s = (char*)malloc(5*sizeof(char));
   memset( s, c, 5 );
   for( i=0; i<5; i++ )
     printf( "c[%d]=%c ", i, c );
   printf( "\n" );
   free(s);
   return 0;
}
________________________________________________________________________________________________________

Función strcat ANSI C

char *strcat(char*s1, const char *s2);
Añade una copia de la cadena apuntada por s2 (incluyendo el carácter nulo) al final de la cadena apuntada por s1. El carácter inicial de s2 sobrescribe el carácter nulo al final de s1.

Valor de retorno:

La función retorna el valor de s1. Si la copia hace que los objetos se superpongan, entonces el comportamiento no está definido.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[11] = "Hola ";
   char s2[6] = "amigos";
 
   printf( "s1=%s\t", s1 );
   printf( "s2=%s\n", s2 );
   strcat( s1, s2 );
   printf( "s1=%s\n", s1 );
 
   return 0;
}
________________________________________________________________________________________________________

Función strchr ANSI C

char *strchr(char *s, int c);
Localiza la primera aparición de c (convertido a unsigned char) en la cadena apuntada por s (incluyendo el carácter nulo).

Valor de retorno:

La función retorna un puntero a partir del carácter encontrado. Si no se ha encontrado el carácter, c, entonces retorna un puntero null.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s[11] = "Hola amigos";
   char c = 'a';
 
   printf( "s=%s\t", s );
   printf( "c=%c\n", c );
   printf( "strchr=%s\n", strchr( s, c ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strcmp ANSI C

int strcmp(const char *s1, const char *s2); 
Compara la cadena apuntada por s1 con la cadena apuntada por s2.

Valor de retorno:

La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según la cadena apuntada por s1 es mayor, igual, o menor que la cadena apuntada por s2.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[5] = "Abeja";
   char s2[5] = "abeja";
   int i;
 
   printf( "s1=%s\t", s1 );
   printf( "s2=%s\n", s2 );
 
   i = strcmp( s1, s2 );
   printf( "s1 es " );
   if( i < 0 )  printf( "menor que" );
   else if( i > 0 )  printf( "mayor que" );
   else  printf( "igual a" );
   printf( " s2\n" );
 
   return 0;
}
________________________________________________________________________________________________________

Función strcoll ANSI C

int strcoll(const char *s1, const char *s2);
Compara la cadena apuntada por s1 con la cadena apuntada por s2, ambas interpretadas acordes a la categoría LC_COLLATE de la localidad actual.

Valor de retorno:

La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según la cadena apuntada por s1 es mayor, igual, o menor que la cadena apuntada por s2, cuando ambas son interpretadas apropiadamente según la localidad actual.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[5] = "Abeja";
   char s2[5] = "abeja";
   int i;
 
   printf( "s1=%s\t", s1 );
   printf( "s2=%s\n", s2 );
 
   i = strcoll( s1, s2 );
   printf( "s1 es " );
   if( i < 0 )  printf( "menor que" );
   else if( i > 0 )  printf( "mayor que" );
   else  printf( "igual a" );
   printf( " s2\n" );
 
   return 0;
}
________________________________________________________________________________________________________

Función strcpy ANSI C

char *strcpy(char *s1, const char *s2);
Copia la cadena apuntada por s2 (incluyendo el carácter nulo) a la cadena apuntada por s1.

Valor de retorno:

La función retorna el valor de s1. Si al copiar una cadena a la otra se superponen, entonces el comportamiento no está definido.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s2[8] = "abcdefg";
   char s1[8];
 
   strcpy( s1, s2 );
   printf( "s2=%s\n", s2 );
   printf( "s1=%s\n", s1 );
 
   return 0;
}
________________________________________________________________________________________________________

Función strcspn ANSI C

size_t strcspn(const char *s1, const char *s2);
Cuenta el número de caracteres de una subcadena inicial apuntada por s1 que no contenga ninguno de los caracteres en la cadena apuntada por s2.

Valor de retorno:

La función retorna el número de caracteres leídos de la subcadena hasta que halla alguno de los caracteres de s2. El carácter nulo no se cuenta.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[13] = "Hola a todos";
   char s2[5] = "abcd";
 
   printf( "s1=%s\n", s1 );
   printf( "s2=%s\n", s2 );
   printf( "strcspn(s1,s2) = %d\n", strcspn( s1, s2 ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strerror ANSI C

char *strerror(int errnum);
Convierte el número de error en errnum a un mensaje de error (una cadena de caracteres).

Valor de retorno:

La función retorna la cadena de caracteres conteniendo el mensaje asociado con el número de error. Esta conversión y el contenido del mensaje dependen de la implementación. La cadena no será modificada por el programa, pero sí puede ser sobrescrito con otra llamada a la misma función.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   int errnum;
 
   for( errnum=0; errnum<39; errnum++ )
     printf( "strerror(%d) = %s\n", errnum, strerror( errnum ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strlen ANSI C

size_t strlen(const char *s);
Calcula el número de caracteres de la cadena apuntada por s.

Valor de retorno:

La función retorna el número de caracteres hasta el carácter nulo, que no se incluye.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s[13] = "Hola a todos";
 
   printf( "s=%s\n", s );
   printf( "strlen(s) = %d\n", strlen( s ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strncat ANSI C

char *strncat(char*s1, const char *s2, size_t n);
Añade no más de n caracteres (un carácter nulo y los demás caracteres siguientes no son añadidos) de la cadena apuntada por s2 al final de la cadena apuntada por s1. El carácter inicial de s2 sobrescribe el carácter nulo al final de s1. El carácter nulo siempre es añadido al resultado.

Valor de retorno:

La función retorna el valor de s1. Si la copia hace que los objetos se superpongan, entonces el comportamiento no está definido.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[11] = "Hola ";
   char s2[6] = "amigos";
 
   printf( "s1=%s\t", s1 );
   printf( "s2=%s\n", s2 );
   strncat( s1, s2, 3 );
   printf( "s1=%s\n", s1 );
 
   return 0;
}
________________________________________________________________________________________________________

Función strncmp ANSI C

int strncmp(const char *s1, const char *s2, size_t n);
Compara no más de n caracteres (caracteres posteriores al carácter nulo no se tienen en cuenta) de la cadena apuntada por s1 con la cadena apuntada por s2.

Valor de retorno:

La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según la cadena apuntada por s1 es mayor, igual, o menor que la cadena apuntada por s2.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[9] = "artesano";
   char s2[8] = "artista";
   int i;
 
   printf( "s1=%s\t", s1 );
   printf( "s2=%s\n", s2 );
 
   i = strncmp( s1, s2, 3 );
   printf( "Las 3 primeras letras de s1 son " );
   if( i < 0 )  printf( "menores que" );
   else if( i > 0 )  printf( "mayores que" );
   else  printf( "iguales a" );
   printf( " s2\n" );
 
   return 0;
}
________________________________________________________________________________________________________

Función strncpy ANSI C

char *strncpy(char *s1, const char *s2, size_t n);
Copia no más de n caracteres (caracteres posteriores al carácter nulo no son copiados) de la cadena apuntada por s2 a la cadena apuntada por s1.

Valor de retorno:

La función retorna el valor de s1. Si al copiar una cadena a la otra se superponen, entonces el comportamiento no está definido. Si el array/arreglo apuntado por s2 es una cadena que es más corta que n caracteres, entonces caracteres nulos son añadidos a la copia en el array apuntado por s1.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s2[8] = "abcdefg";
   char s1[8];
 
   strncpy( s1, s2, 3 );
   printf( "s2=%s\n", s2 );
   printf( "s1=%s\n", s1 );
 
   return 0;
}
________________________________________________________________________________________________________

Función strpbrk ANSI C

char *strpbrk(const char *s1, const char *s2);
Localiza la primera aparición de la cadena apuntada por s1 de cualquier carácter de la cadena apuntada por s2.

Valor de retorno:

La función retorna un puntero al carácter, o un puntero nulo si ningún carácter de s2 apareció en s1.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[13] = "Hola a todos";
   char s2[5] = "deip";
 
   printf( "s1=%s\n", s1 );
   printf( "s2=%s\n", s2 );
   printf( "strpbrk(s1,s2) = %s\n", strpbrk( s1, s2 ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strrchr ANSI C

char *strrchr(char *s, int c);
Localiza la última aparición de c (convertido a unsigned char) en la cadena apuntada por s (incluyendo el carácter nulo).

Valor de retorno:

La función retorna un puntero a partir del carácter encontrado. Si no se ha encontrado el carácter, c, entonces retorna un puntero nulo.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s[11] = "Hola amigos";
   char c = 'a';
 
   printf( "s=%s\t", s );
   printf( "c=%c\n", c );
   printf( "strrchr=%s\n", strrchr( s, c ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strspn ANSI C

size_t strspn(const char *s1, const char *s2);
Calcula el número de caracteres de una subcadena inicial apuntada por s1 que consiste en todos los caracteres formados en la cadena apuntada por s2.

Valor de retorno:

La función retorna la longitud de esta subcadena.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[13] = "Hola a todos";
   char s2[5] = "Hola";
 
   printf( "s1=%s\n", s1 );
   printf( "s2=%s\n", s2 );
   printf( "strspn(s1,s2) = %d\n", strspn( s1, s2 ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strstr ANSI C

char *strstr(const char *s1, const char *s2);
Localiza la primera aparición en la cadena apuntada por s1 de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por s2.

Valor de retorno:

La función retorna un puntero a la cadena encontrada, o un puntero nulo si no se encontró la cadena. Si s2 apunta a una cadena de longitud cero, la función retorna s1.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[13] = "Hola a todos";
   char s2[3] = "la";
 
   printf( "s1=%s\n", s1 );
   printf( "s2=%s\n", s2 );
   printf( "strstr(s1,s2) = %s\n", strstr( s1, s2 ) );
 
   return 0;
}
________________________________________________________________________________________________________

Función strtok ANSI C

char *strtok(char *s1, const char *s2);
Rompe la cadena s1 en segmentos o tókens. Esta ruptura destruye s1, en el proceso. La forma de romper la cadena depende de la secuencia de caracteres de la cadena s2. Estos caracteres se denominan [caracteres] delimitadores. La función recorrerá la cadena en busca de alguno de los delimitadores de la cadena s2. Cuando lo encuentre, el proceso se detiene, ya que tiene un token. Posteriores llamadas a strtok romperán la cadena s1 en otros tókens. Estas llamadas pueden tener otra secuencia de delimitadores.

Valor de retorno:

La primera llamada a strtok determina la cadena a romper, retornando el puntero al comienzo del primer token. Si se recorrió la cadena s1 sin haber encontrado un delimitador, y aún no se ha obtenido el primer token, entonces la función retornará un puntero nulo.
Posteriores llamadas retornarán más tókens. Si ya no encuentra más delimitadores, entonces retornará todos los caracteres desde el último delimitador para ser el último token. Si ya se retornó el último token, entonces retornará un puntero nulo con demás llamadas a la función.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s1[49] = "Esto es un ejemplo para usar la funcion strtok()";
   char s2[4] = " \n\t";
   char *ptr;
 
   printf( "s1=%s\n", s1 );
 
   ptr = strtok( s1, s2 );    // Primera llamada => Primer token
   printf( "%s\n", ptr );
   while( (ptr = strtok( NULL, s2 )) != NULL )    // Posteriores llamadas
     printf( "%s\n", ptr );
 
   return 0;
}
________________________________________________________________________________________________________

Función strxfrm ANSI C

size_t strxfrm(char *s1, const char *s2, size_t n);
Transforma la cadena apuntada por s2 y coloca la cadena resultante en el array/arreglo apuntado por s1. La transformación es tal que, si la función strcmp es aplicada a las dos cadenas transformadas, el valor de retorno corresponderá a los valores de retorno de la función strcoll. No más de n caracteres son colocados en el array resultante apuntado por s1, incluyendo el carácter nulo. Si n es cero, s1 puede ser un puntero nulo.

Valor de retorno:

La función retorna la longitud del array transformado (sin incluir el carácter nulo). Si el valor es n o más, el contenido del array apuntado por s1 es indeterminado. Si se copian objetos que son superpuestos, el comportamiento no está definido.

Ejemplo:

#include <stdio.h>
#include <string.h>
 
int main()
{
   char s2[7] = "abcdefg";
   char s1[7];
   int i;
 
   i = strxfrm( s1, s2, 4 );
   printf( "s2=%s\n", s2 );
   printf( "s1=%s\tlonguitud=%d\n", s1, i );
 
   return 0;
}

0 comentarios: