CADENAS O STRING
Una cadena es un arreglo de tipo caracter.
Ejemplo:
char nombre[30];
/* declara la variable nombre de 30 caracteres */
Toda cadena de caracteres termina en un nulo '\0'.
Ejemplo:
#define TM 5
#include "stdio.h"
main()
{ char s[TM];
puts("Escribe hola");
gets(s);
printf("%s\n", s);
}
La cadena s quedar as en memoria:
/* convierte una cadena en mayscula */
#include <stdio.h>
#include <ctype.h>
main()
{
char string[80];
int i;
printf("Introduce una frase en minscula :");
gets(string);
for(i=0; string[i]; i++)
printf("%c", toupper(string[i]));
}
/*permita ingresar una frase y luego la descompone ensus palabras imprimindolas en lneas
diferentes .
#include "stdio.h"
#include<iostream.h>
main()
{
char s[80];
int i;
printf("Escribe una frase :"); gets(s);
for(i=0; s[i]; i++)
if (s[i]==' ')
cout<<endl;
else
cout<<s[i];
}
FUNCIONES DE CADENA DE LA BIBLIOTECA
Estas funciones se hallan definidas en el archivo "string.h".
strcpy() :Copia el contenido de la cadena origen en la cadena destino.
Formato : strcpy(destino, origen);
Ejemplo:
#include "string.h"
main()
{
char a[80];
strcpy(a, "hola mundo");
printf("%s\n", a);
}
strcat() :Concatena dos cadenas.
Formato : strcat(cadena1, cadena2);
Concatena la cadena2 al final de la cadena1.
Ejemplo:
#include <string.h>
#include <stdio.h>
main()
{
char a1[80], a2[40];
strcpy(a1,"cartagena");
strcpy(a2," colombia");
strcat(a1, a2);
puts(a1);
}
strcmp() :Compara dos cadenas y devuelve cero si son iguales.
Formato : strcmp(cadena1, cadena2);
Si cadena1 es mayor que cadena2 devuelve un valor mayor que cero.
Si cadena1 es menor que cadena2 devuelve un valor negativo.
Ejemplo:
#include <string.h>
#include <stdio.h>
#include<stdlib.h>
main()
{ const char pass[]="algoritmica I";
char s[80];
puts("Password :"); gets(s);
if((strcmp(s, pass)) == 0)
puts("Ok...");
else {
puts("Password equivocado");
exit(0);
}
}
strlen() :Devuelve la longitud de una cadena.
Formato : strlen(cadena);
Ejemplo :
#include <string.h>
#include <stdio.h>
main()
{
char s[80];
strcpy(s, "Hello...");
printf("%d\n", strlen(s));
getche();
}
#include <stdio.h>
#include <string.h>
main()
{
char str1[80],str2[80];
int i;
printf ("Introduce una cadena de caracteres: ");
gets (str1);
printf ("Introduce la segunda cadena de caractes: ");
gets (str2);
/*longitud de las cadenas*/
printf ("\n%s es de %d caracteres de largo\n",str1,strlen(str1));
printf ("\n%s es de %d caracteres de largo\n",str2,strlen(str2));
/*comparar cadenas*/
i=strcmp(str1,str2);
if (!i)
printf ("\nLas cadenas son iguales\n");
else
if (i<0) printf ("\n%s es menor que %s",str1,str2);
else printf ("\n%s es mayor que %s",str1,str2);
/*concatenacin de srt1 con str2*/
if (strlen(str1)+strlen(str2)<80)
{
strcat (str1,str2);
printf ("\n%s",str1);
}
/*copia str2 a str1*/
strcpy (str1,str2);
printf ("\n%s y %s",str1,str2);
}
2. Funcin que realiza la misma operacin que la funcin
strlen.
Calcula la longitud de la cadena S. Regresa el nmero de caracteres en S
sin contar el caracter de fin de cadena.
#include stdio.h
#include ctype.h
int mystrlen(char *s);
void main(void)
{ int n;
char cad[50];
clrscr();
printf("Introduce la cadena: ");
gets(cad);
n=mystrlen(cad);
printf("\nEl numero de caracteres de la cadena s fue %d",n);
getch();
}
int mystrlen(char *s)
{int c=0;
while(1)
{if(*s=='\0')
{
break;
}
c++;
s++;
}
return c;
}
14.3 Conversin de cadenas
Existen unas cuantas funciones para convertir cadenas a enteros, enteros largos y
valores flotantes. Estas son:
double atof(const char *cadena) Convierte una cadena a un valor flotante.
int atoi(const char *cadena) Convierte una cadena a un valor entero.
int atol(const char *cadena) Convierte una cadena a un valor entero largo.
double strtod(const char *cadena, char **finap) Convierte una cadena a un valor
de punto flotante.
double strtol(const char *cadena, char *finap, int base) Convierte una cadena a
un entero largo de acuerdo a una base dada, la cual deber estar entre 2 y 36
inclusive.
unsigned long strtoul(const char *cadena, char *finap, int base) Convierte una
cadena a un entero largo sin signo.
Varias de las funciones se pueden usar en forma directa, por ejemplo:
char *cad1 = "100";
char *cad2 = "55.444";
char *cad3 = "
1234";
char *cad4 = "123cuatro";
char *cad5 = "invalido123";
char *cad6 = "123E23Hola";
char *cad7;
int i;
float f:
i = atoi(cad1); /* i = 100 */
f = atof(cad2); /* f = 55.44 */
i = atoi(cad3); /* i = 1234 */
i = atoi(cad4); /* i = 123 */
i = atoi(cad5); /* i = 0 */
f = strtod(cad6, &cad7); /* f=1.230000E+25 y cad7=hola*/
Nota:
Los caracteres en blanco son saltados.
Caracteres ilegales son ignorados.
Si la conversin no puede ser hecha se regresa cero y errno es puesta con el valor
ERANGE.
FUNCION
DESCRIPCION
stpcpy
Copia una cadena de caracteres en otra.Se detiene cuando encuentra el terminador
nulo.
strcat
Aade una cadena de caracteres a otra.
strchr
Busca, en una cadena, un caracter dado.
strcmp Compara dos cadenas.
strcmpi Macro que compara dos cadenas sin distinguir entre maysculas y minsculas.
strcpy
Copia una cadena.
strcspn
Busca segmentos que no contienen un subconjunto de un conjunto especificado de
caracteres.
strdup
Copia una cadena a una nueva localidad.
_strerror Genera un mensaje de error definido por el programador.
strerror Retorna el apuntador al mensaje asociado con el valor del error.
stricmp Compara dos cadenas sin diferenciar entre maysculas y minsculas
strlen
Determina la longitud de una cadena.
strlwr
Convierte las maysculas de una cadena en minsculas.
strncat Aade el contenido de una cadena al final de otra.
strncmp Compara parte de una cadena con parte de otra.
strncmpi
Compara parte de una cadena con parte de otra, sin distinguir entre maysculas y
minsculas.
strncpy Copia un un nmero de bytes dados, desde una cadena hacia otra.
strnicmp
Compara parte de una cadena con parte de otra, sin distinguir entre maysculas y
minsculas.
strnset Hace que un grupo de elementos de una cadena tengan un valor dado.
strpbrk
Busca la primera aparicin, en una cadena, de cualquier caracter de un conjunto
dado.
strrchr Busca la ltima aparicin de un caracter en una cadena.
strrev
Invierte el orden de los caracteres de una cadena.
strset
Hace que los elementos de una cadena tengan un valor dado.
strspn
strstr
Busca en una cadena el primer segmento que es un subconjunto de un conjunto de
caracteres dado.
Busca en una cadena la aparicin de una subcadena dada.
_strtime Convierte la hora actual a una cadena.
strtod
Convierte una cadena a un valor double long double.
strtol
Convierte una cadena a un valor long.
strtoul
Convierte una cadena a un valor unsigned long.
strupr
Convierte las minsculas de una cadena a maysculas.