Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Captulo 14
CADENAS
EJEMPLO 14.1
EJEMPLO 14.2
char entrada[40];
char *ptrchar;
EJEMPLO 14.3
66 Programacin en C. Algoritmos, estructuras de datos y objetos
#include <stdio.h>
#include <string.h>
void main()
{
char cad[81], *a;
int i, n;
Ejemplo 14.4
Ejemplo 14.5
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
double v=0 ;
a = (char**) malloc(1);
v = strtod (c, a);
if (errno != 0)
{
printf ("Error \"%d\" al convertir la cadena.", errno);
exit (-1);
}
EJERCICIOS
14.1
strcpy (cd, Asigna cadena);
14.2
int i;
char asignatura [N][20], codigo [N][6];
14.3
68 Programacin en C. Algoritmos, estructuras de datos y objetos
scanf( ) limita las variables que reconoce en la entrada por medio de los espacio en blanco que
las separan, por lo tanto no es capaz de reconocer una lnea que contenga espacios en blanco,
porque para esta funcin cada palabra es una cadena diferente. Por lo tanto si queremos leer una
cadena de caracteres que contenga espacios en blanco ha de hacerse con gets( ). Por otro lado
gets( ) tiene el peligro de que aparentemente tiene un uso ms sencillo que scanf( ) pero si
no se le proporciona una cadena de caracteres como argumento puede que no almacene
correctamente la entrada.
14.4
14.6
La variable c1 es un puntero que puede apuntar a un puntero a caracteres, pero no esta inicializado
con una direccin vlida. La variable c2 es un array de 10 punteros a caracteres, pero estos 10
punteros no apuntan a ningn dato vlido. La variable c3 es una matriz con espacio para 210
punteros a caracteres no inicializados accesibles segn un arreglo de 10 filas de 21 elementos cada
una de ellas.
Cadenas 69
14.7
14.8
14.9
main( )
{
char *texto[60];
int i, lmax, posmax, lmin, posmin;
char buffer [80];
14.10
main( )
{
char cad[80];
char*separador = " ";
char*ptr = cad;
gets (cad);
printf("\n%s\n",cad);
ptr = strtok(cad, separador);
printf("\tSe rompe en las palabras");
while (ptr)
{
printf("\n%s",ptr);
ptr = strtok(NULL, separador);
}
}
14.11
main( )
{
char* texto[30], buffer [80], clave[15];
int i, veces, *ptr;
main( )
{
char* texto[40], buffer [80];
int i, longlin[40][2];
}
ordenar (longlin);
for (i=0; i < 40 ; i++)
puts (texto[ longlin[i]]);
}
14.13
main( )
{
char* texto[100], buffer [80], palabras[28][20], *ptr;
int i, j;
14.14
main( )
{
char* texto[100], buffer [80], palabras[28][20], *ptr;
int i, j;
14.15
main( )
72 Programacin en C. Algoritmos, estructuras de datos y objetos
{
char* texto[100], buffer [80], *ptr;
int i, kilos, suma;
14.16
main( )
{
char *texto[50], buffer[80], clave[15];
int i;
14.17
char* leerGrandes (char* num1, char* num2)
{
/* para alinear los nmeros damos la vuelta a las cadenas
487954558 855459784
+ 235869 + 968532
------------ -------------
488190427 724091884
as podemos sumar los dgitos en el sentido del array */
char* rnum1, * rnum2, *result;
int i, mayor;
14.18
main( )
{
char* texto[100], buffer [80], *ptr;
int i, j, mayor;
14.19
main( )
{
char cad1[40], cad2[40];
char* ptr1 = cad1, *ptr2 = cad2;
int letras1[28], letras2[28], i;
gets (cad1);
cad1 = tolower (cad1);
gets (cad2);
cad2 = tolower (cad2);
for (i=0; i < strlen(cad1); i++)
{
if (alpha (cad1[i]))
letras1[cad1[i] - 'a']++;
if (alpha (cad1[i]))
letras1[cad1[i] - 'a']++;
}
for (i=0; i < strlen(28); i++)
if (letras1[i] != letras2[i])
74 Programacin en C. Algoritmos, estructuras de datos y objetos