Page 131

2 Estructuras de datos en C: vectores est´aticos y registros

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

40

return 0;

41 42

}

Los registros pueden copiarse ´ıntegramente sin mayor problema. Este programa, por ejemplo, copia el contenido de un registro en otro y pasa a min´ usculas el nombre de la copia: copia registro.c

copia registro.c 1 2 3

#include <stdio.h> #include <string.h> #include <ctype.h>

4 5 6

#define MAXNOM 40 #define LONDNI 9

7 8 9 10 11 12

struct Persona { char nombre[MAXNOM+1]; int edad ; char dni[LONDNI+1]; };

13 14 15 16 17 18

int main(void) { struct Persona una, copia; char linea[81]; int i, longitud ;

19

printf ("Nombre: "); gets(una.nombre); printf ("Edad : "); gets(linea); sscanf (linea, "%d", &una.edad ); printf ("DNI : "); gets(una.dni);

20 21 22 23

copia = una; // Copia

24 25

longitud = strlen(copia.nombre); for (i=0; i<longitud ; i++) copia.nombre[i] = tolower (copia.nombre[i]);

26 27 28 29

printf ("Nombre le´ ıdo: %s\n", una.nombre); printf ("Edad le´ ıda : %d\n", una.edad ); printf ("DNI le´ ıdo : %s\n", una.dni);

30 31 32 33

printf ("Nombre copia: %s\n", copia.nombre); printf ("Edad copia : %d\n", copia.edad ); printf ("DNI copia : %s\n", copia.dni);

34 35 36 37

return 0;

38 39

}

Observa que la copia se efect´ ua incluso cuando los elementos del registro son vectores. O sea, copiar vectores con una mera asignaci´on est´a prohibido, pero copiar registros es posible. Un poco incoherente, ¿no? Por otra parte, no puedes comparar registros. Este programa, por ejemplo, efect´ ua una copia de un registro en otro para, a continuaci´on, intentar decirnos si ambos son iguales o no: E compara registros mal.c E 1

#include <stdio.h>

2 3 4

#define MAXNOM 40 #define LONDNI 9

5 6 7 8 9

struct Persona { char nombre[MAXNOM+1]; int edad ; char dni[LONDNI+1];

Introducci´ on a la Programaci´ on con C

125

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement