lunes, 30 de septiembre de 2019

String

String.h es un archivo de la Biblioteca estándar del lenguaje de programación C que contiene la definición de macros, constantes, funciones y tipos y algunas operaciones de manipulación de memoria.
 Las funciones declaradas en string.h se han hecho muy populares, por lo que están garantizadas para cualquier plataforma que soporte C. Sin embargo, existen algunos problemas de seguridad con estas funciones, como el desbordamiento de buffer (buffer overflow), que hacen que algunos programadores prefieran opciones más seguras frente a la portabilidad que estas funciones ofrecen. Además, las funciones para cadenas de caracteres sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII compatibles.


Función
Propósito
Ejemplo
strcat
añade una cadena al final de otra
char nombre[8] = "Ana", apellido[4] = "Luz";
strncat
añade los n primeros caracteres de una cadena al final de otra
//strcat concatena dos cadenas
strcat(nombre, " "); //concateno con un espacio en blanco
strcat(nombre, apellido); //le añado la cadena apellido
printf("Cadena concatenada: %s \n", nombre);
Strchr
localiza un carácter en una cadena, buscando desde el principio
/* strchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a sample string";
  char * pch;
  printf ("Looking for the 's' character in \"%s\"...\n",str);
  pch=strchr(str,'s');
  while (pch!=NULL)
  {
    printf ("found at %d\n",pch-str+1);
    pch=strchr(pch+1,'s');
  }
  return 0;
}
strrchr
localiza un carácter en una cadena, buscando desde el final
/* strrchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a sample string";
  char * pch;
  pch=strrchr(str,'s');
  printf ("Last occurence of 's' found at %d \n",pch-str+1);
  return 0;
}
strcmp
Compara dos cadenas alfabéticamente ('a'!='A')
if (strcmp(orden, "fin") == 0) { ... };
strncmp
compara los n primeros caracteres de dos cadenas numéricamente ('a'!='A')
/* strncmp example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
  int n;
  puts ("Looking for R2 astromech droids...");
  for (n=0 ; n<3 ; n++)
    if (strncmp (str[n],"R2xx",2) == 0)
    {
      printf ("found %s\n",str[n]);
    }
  return 0;
}
Strcoll
compara dos cadenas según la colación actual ('a'=='A')
#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;

}
strcpy
copia una cadena en otra
char ciudad[6];
ciudad ← "Roma"
strcpy( ciudad, "Roma" ) (instrucción de expresión)
strncpy
copia los n primeros caracteres de una cadena en otra
/* strncpy example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[]= "To be or not to be";
  char str2[40];
  char str3[40];

  /* copy to sized buffer (overflow safe): */
  strncpy ( str2, str1, sizeof(str2) );

  /* partial copy (only 5 chars): */
  strncpy ( str3, str2, 5 );
  str3[5] = '\0';   /* null character manually added */

  puts (str1);
  puts (str2);
  puts (str3);

  return 0;
}
strerror
devuelve la cadena con el mensaje de error correspondiente al número de error dado
#include <string.h>

       char *strerror(int errnum);

       int strerror_r(int errnum, char *buf, size_t buflen);
                   /* XSI-compliant */

       char *strerror_r(int errnum, char *buf, size_t buflen);
                   /* GNU-specific */

       char *strerror_l(int errnum, locale_t locale
strlen
devuelve la longitud de una cadena
/* strlen example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char szInput[256];
  printf ("Enter a sentence: ");
  gets (szInput);
  printf ("The sentence entered is %u characters long.\n",(unsigned)strlen(szInput));
  return 0;
}
strspn
devuelve la posición del primer carácter de una cadena que no coincide con ninguno de los caracteres de otra cadena dada
/* strspn example */
#include <stdio.h>
#include <string.h>

int main ()
{
  int i;
  char strtext[] = "129th";
  char cset[] = "1234567890";

  i = strspn (strtext,cset);
  printf ("The initial number has %d digits.\n",i);
  return 0;
}
strpbrk
devuelve la posición del primer carácter que coincide con alguno de los caracteres de otra cadena dada
/* strpbrk example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a sample string";
  char key[] = "aeiou";
  char * pch;
  printf ("Vowels in '%s': ",str);
  pch = strpbrk (str, key);
  while (pch != NULL)
  {
    printf ("%c " , *pch);
    pch = strpbrk (pch+1,key);
  }
  printf ("\n");
  return 0;
}
strstr
encuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otra
* strstr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");
  strncpy (pch,"sample",6);
  puts (str);
  return 0;
}
strtok
busca una cadena dentro de otra
/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}
strxfrm
parte una cadena en una secuencia de tokens
#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;
strrev
invierte una cadena
#include<stdio.h>
#include<string.h>
  
int main()
{
   char str[50] = "geeksforgeeks";
  
   printf("The given string is =%s\n",str);
  
  printf("After reversing string is =%s",strrev(str));
  
   return 0;


                                 

No hay comentarios.:

Publicar un comentario