Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
segn la cadena apuntada por str1 es mayor, igual, o menor que la caden, str2 );
El prototipo de la funcin es: strcmp int strcmp(const char *s1, const char *s2); Esta funcin compara la cadena apuntada por s1 con la cadena apuntada por s2, la funcin retorna 0 si las 2 cadenas son iguales, si s1 es mayor que s2 entonces retorna un valor mayor que 0 y si s1 es menor que s2 retorna un valor menor que 0. Nota: La funcin strcmp al comparar estas dos cadenas "HOLA" y "hola" el resultado es que son diferentes debido a que esta funcin encuentra diferencias por las maysculas y minsculas Un ejemplo de como utilizar esta funcin en C: #include<stdio.h> #include<string.h> #include<stdlib.h> main(){ char c1[15]="HOLA", c2[15]="hola"; int n; n = strcmp(c1,c2); if(n==0){ printf("Las dos cadenas \"%s\" y \"%s\" son iguales.\n", c1, c2); } else{ if(n>0){ printf("La cadena \"%s\" es mayor que \"%s\".\n",c1,c2); } else{ printf("La cadena \"%s\" es menor que \"%s\".\n",c1,c2); } } system("pause"); return 0; } Strcpy
En esta biblioteca se incluyen rutinas de manipulacin de cadenas de caracteres y de memoria. De momento veremos slo algunas de las que se refieren a cadenas.
Funcin strlen()
strlen calcula la longitud de la cadena s. Valor de retorno: strlen devuelve el nmero de caracteres que hay en s, excluyendo el carcter nulo de terminacin de cadena. Ejemplo:
#include <iostream> #include <cstring> using namespace std; int main() { char *cadena = "Una cadena C++ termina con cero"; cout << "La cadena: [" << cadena << "] tiene " << {f:strlen}(cadena) << " caracteres" << endl; return 0; } Funcin strcpy()
Copia la cadena orig a dest, la copia de caracteres se detendr cuando sea copiado el carcter nulo. Valor de retorno: strcpy devuelve el puntero dest. Ejemplo:
#include <iostream> #include <cstring> using namespace std; int main() { char *cadena = "Cadena ejemplo";
char cad[32]; cout << strcpy(cad, cadena) << endl; cout << cad << endl; return 0; } Funcin strcmp()
Compara las dos cadenas, si la cad1 es mayor que cad2 el resultado ser mayor de 0, si cad1 es menor que cad2, el resultado ser menor de 0, si son iguales, el resultado ser 0. La comparacin se realiza carcter a carcter. Mientras los caracteres comparados sean iguales, se contina con el siguiente carcter. Cuando se encuentran caracteres distintos, aqul que tenga un cdigo ASCII menor pertenecer a la cadena menor. Por supuesto, si las cadenas son iguales hasta que una de ellas se acaba, la ms corta es la menor. Ejemplo:
#include <iostream> #include <cstring> using namespace std; int main() { char *cadena1 char *cadena2 char *cadena3 char *cadena4 = = = = "Cadena ejemplo 1"; "Cadena ejemplo 2"; "Cadena"; "Cadena";
if(strcmp(cadena1, cadena2) < 0) cout << cadena1 << " es menor que " << cadena2 << endl; else if(strcmp(cadena1, cadena2) > 0) cout << cadena1 << " es menor que " << cadena2 << endl; else cout << cadena1 << " es igual que " << cadena2 << endl; cout << strcmp(cadena3, cadena2) << endl; cout << strcmp(cadena3, cadena4) << endl; return 0; } Funcin strcat()
strcat aade una copia de orig al final de dest. La longitud de la cadena resultante ser strlen(dest) + strlen(orig).
Copia maxlong caracteres de la cadena orig a dest, si hay ms 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 ms. Valor de retorno: strncpy devuelve el puntero dest. Ejemplo:
#include <iostream> #include <cstring> using namespace std; int main() { char *cadena = "Cadena ejemplo"; char cad[32]; strncpy(cad, cadena, 4); cad[4] = '\0'; cout << cad << endl; return 0; } Funcin strncmp()
Compara las dos cadenas igual que strcmp, pero slo se comparan los primeros maxlong caracteres. Ejemplo:
#include <iostream> #include <cstring> using namespace std; int main() { char *cadena1 char *cadena2 char *cadena3 char *cadena4 = = = = "Cadena ejemplo 1"; "Cadena ejemplo 2"; "Cadena"; "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; } Funcin strncat()
strncat aade como mximo maxlong caracteres de la cadena orig al final de dest, y despus aade el carcter 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> #include <cstring> using namespace std; int main() { char *cadena1 = "Cadena de"; char *cadena2 = " ejemplo"; char cadena3[126]; strcpy(cadena3, cadena1); cout << strncat(cadena3, cadena2, 5) << endl; return 0; }
Funcin strtok()
Busca dentro de una cadena conjuntos de caracteres o smbolos (tokens) separados por delimitadores. Sintaxis:
char *strtok(char *s1, const char *s2);
strtok considera la cadena s1 como una lista de smbolos separados por delimitadores de la forma de s2. La primera llamada a strtok devuelve un puntero al primer carcter del primer smbolo de s1 e inserta un carcter nulo a continuacin del smbolo retornado. Las siguientes llamadas, especificando null como primer argumento, siguen dando smbolos hasta que no quede ninguno. El separador, s2, puede ser diferente para cada llamada. Valor de retorno: strtok devuelve un puntero al smbolo extrado, oNULL cuando no quedan smbolos. Ejemplo:
#include <cstring> #include <iostream> using namespace std; int main() { 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;