Curso de C++ (Página 17b)

pagina017a Principal pagina018

CAPITULO 17b Más librerías estándar: string.h

Función "strncpy()"

Copia un determinado número de caracteres de una cadena en otra.

Sintaxis:

char *strncpy(char *dest, const char *orig, size_t maxlong);

Copia maxlong caracteres de la cadena orig a dest, si hay más caracteres se ignoran, si hay menos se rellenará con caracteres nulos. La cadena dest no se terminará con nulo si la longitud de orig es maxlong o más.

Valor de retorno:

"strncpy" devuelve el puntero dest.

Ejemplo:

#include <iostream.h> 
#include <string.h>
 
int main() { 
   char *cadena = "Cadena ejemplo"; 
   char cad[32];
 
   strncpy(cad, cadena, 4);
   cad[4] = '\0'; 
   cout << cad << endl; 
   return 0; 
} 

Función "strncmp()"

Compara dos porciones de cadenas.

Sintaxis:

int strncmp(char *cad1, const char *cad2, size_t maxlong);

Compara las dos cadenas igual que strcmp, pero sólo se comparan los primeros maxlong caracteres.

Ejemplo:

#include <iostream.h> 
#include <string.h>
 
int main() { 
   char *cadena1 = "Cadena ejemplo 1"; 
   char *cadena2 = "Cadena ejemplo 2"; 
   char *cadena3 = "Cadena"; 
   char *cadena4 = "Cadena";
 
   if(strncmp(cadena1, cadena2, 6) < 0) 
      cout << cadena1 << " es menor que " << cadena2 << endl; 
   else if(strncmp(cadena1, cadena2, 6) > 0)
           cout << cadena1 << " es menor que " << cadena2 << endl; 
        else
           cout << cadena1 << " es igual que " << cadena2 << endl; 
   cout << strncmp(cadena3, cadena2, 5) << endl; 
   cout << strncmp(cadena3, cadena4, 4) << endl; 
   return 0; 
} 

Función "strncat()"

Añade o concatena una porción de una cadena a otra.

Sintaxis:

char *strncat(char *dest, const char *orig, size_t maxlong);

"strncat" añade como máximo maxlong caracteres de la cadena orig al final de dest, y después añade el carácter nulo. La longitud de la cadena resultante será strlen(dest) + maxlong.

Valor de retorno:

"strncat" devuelve un puntero a la cadena concatenada.

Ejemplo:

#include <iostream.h> 
#include <string.h>
 
int main() { 
   char *cadena1 = "Cadena de"; 
   char *cadena2 = " ejemplo"; 
   char cadena3[126];
 
   strcpy(cadena3, cadena1); 
   cout << strcat(cadena3, cadena2, 5) << endl; 
   return 0; 
} 

Función "strtok()"

Busca dentro de una cadena conjuntos de caracteres o símbolos (tokens) separados por delimitadores.

Sintaxis:

char *strtok(char *s1, const char *s2);

"strtok" considera la cadena s1 como una lista de símbolos separados por delimitadores de la forma de s2.

La primera llamada a "strtok" devuelve un puntero al primer caracter del primer símbolo de s1 e inserta un carácter nulo a continuación del símbolo retornado. Las siguientes llamadas, especificando null como primer argumento, siguen dando símbolos hasta que no quede ninguno.

El separador, s2, puede ser diferente para cada llamada.

Valor de retorno:

"strtok" devuelve un puntero al símbolo extraido, o NULL cuando no quedan símbolos.

Ejemplo:

#include <string.h>
#include <iostream.h>
 
int main(void)
{
   char entrada[32] = "abc,d,efde,ew,231";
   char *p;

   // La primera llamada con entrada
   p = strtok(entrada, ",");
   if(p) cout << p << endl;

   // Las siguientes llamadas con NULL
   while(p) {
      p = strtok(NULL, ",");
      if(p) cout << p << endl;
   }
   return 0;
}

pagina017a Principal pagina018