jueves, 26 de septiembre de 2019

PROGRAMA 18


#include <iostream>
#include <iostream>
#include <string.h>

using namespace std;
char cadena[20];
int longitud,j;

int main()
{

    cout << "HOLA, CAPTURA TU NOMBRE" << endl;

    gets(cadena);
    longitud=strlen(cadena);
    cout<<"Hola"<<cadena<<"tu nombre tiene"<<longitud<<endl;
    strcat(cadena,"CORTES");
    cout<<"Hola"<<cadena<<endl;
    return 0;
}






jueves, 19 de septiembre de 2019

¿QUE ES STRING.H?

 


                                STRING.H


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 de utilidad para trabajar con cadenas de caracteres y algunas operaciones de manipulación de memoria (el nombre string puede ser algo inapropiado).
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.


 NOMBRE
PROPOSITO
EJEMPLO.












memcpy











copia n bytes entre dos áreas de memoria que no deben solaparse

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* memcpy example */
#include <stdio.h>
#include <string.h>

struct {
  char name[40];
  int age;
} person, person_copy;

int main ()
{
  char myname[] = "Pierre de Fermat";

  /* using memcpy to copy string: */
  memcpy ( person.name, myname, strlen(myname)+1 );
  person.age = 46;

  /* using memcpy to copy structure: */
  memcpy ( &person_copy, &person, sizeof(person) );

  printf ("person_copy: %s, %d \n", person_copy.name, person_copy.age );

  return 0;
}









Memmove







copia n bytes entre dos áreas de memoria; al contrario que memcpy las áreas deben solaparse





/* memmove example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "memmove can be very useful......";
  memmove (str+20,str+15,11);
  puts (str);
  return 0;
}




Memchr




busca un valor a partir de una dirección de memoria dada y devuelve un puntero a la primera ocurrencia del valor buscado o NULL si no se encuentra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* memchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char * pch;
  char str[] = "Example string";
  pch = (char*) memchr (str, 'p', strlen(str));
  if (pch!=NULL)
    printf ("'p' found at position %d.\n", pch-str+1);
  else
    printf ("'p' not found.\n");
  return 0;
}







Memcmp








Compara los n primeros caracteres de dos áreas de memoria
/* memcmp example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char buffer1[] = "DWgaOtP12df0";
  char buffer2[] = "DWGAOTP12DF0";

  int n;

  n=memcmp ( buffer1, buffer2, sizeof(buffer1) );

  if (n>0) printf ("'%s' is greater than '%s'.\n",buffer1,buffer2);
  else if (n<0) printf ("'%s' is less than '%s'.\n",buffer1,buffer2);
  else printf ("'%s' is the same as '%s'.\n",buffer1,buffer2);

  return 0;
}




Memeset




sobre escribe un área de memoria con un patrón de bytes dado

/* memset example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "almost every programmer should know memset!";
  memset (str,'-',6);
  puts (str);
  return 0;
}













añade una cadena al final de otra
/* strcat example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[80];
  strcpy (str,"these ");
  strcat (str,"strings ");
  strcat (str,"are ");
  strcat (str,"concatenated.");
  puts (str);
  return 0;
}




strncat




añade los n primeros caracteres de una cadena al final de otra
  
/* strncat example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[20];
  char str2[20];
  strcpy (str1,"To be ");
  strcpy (str2,"or not to be");
  strncat (str1, str2, 6);
  puts (str1);
  return 0;
}






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












compara dos cadenas alfabeticamente ('a'!='A')
   
#include <stdio.h>
#include <string.h>

int main ()
{
  char key[] = "apple";
  char buffer[80];
  do {
     printf ("Guess my favorite fruit? ");
     fflush (stdout);
     scanf ("%79s",buffer);
  } while (strcmp (key,buffer) != 0);
  puts ("Correct answer!");
  return 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;
}
 
 
 














copia una cadena en otra

/* strcpy example */
#include <stdio.h>
#include <string.h>
 
int main ()
{
  char str1[]="Sample string";
  char str2[40];
  char str3[40];
  strcpy (str2,str1);
  strcpy (str3,"copy successful");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}












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



r
devuelve la cadena con el mensaje de error correspondiente al número de error dado
/* strerror example : error list */
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main ()
{
  FILE * pFile;
  pFile = fopen ("unexist.ent","r");
  if (pFile == NULL)
    printf ("Error opening file unexist.ent: %s\n",strerror(errno));
  return 0;
}










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









strcspn







devuelve la posición del primer carácter que coincide con alguno de los caracteres de otra cadena dada


   
/* strcspn example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "fcba73";
  char keys[] = "1234567890";
  int i;
  i = strcspn (str,keys);
  printf ("The first number in str is at position %d.\n",i+1);
  return 0;
}







strpbrk







encuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otra



/* 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








busca una cadena dentro de 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
parte una cadena en una secuencia de tokens




































  /* 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
transforma una cadena en su forma de colación (??)



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