Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/05/2010, 10:16
grisuco
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Vaciar variables de una estructura

Hola, tengo una duda.
Para borrar los datos de una variable de estructura, utilizo memset(), que me permite eliminar variable por variable de la estructura (tal como he puesto en mi ejemplo).
1) ¿existe alguna forma de limpiar los valores de una sola orden para toda la estructura?
2) ¿Cual es la mejor forma que tengo de que el programa siguiente me grabe los datos que le doy, en el fichero, sin meter valores que quedaban en la memoria de procesos anteriores?, es decir, que deje lo que esta en blanco, con espacios (sin usar memset()).

Código HTML:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio2.h>
  4. #include <string.h>
  5.  
  6. struct coche
  7.   {
  8.     char matricula [8];
  9.     char propietario[25];
  10.     char marca[10];
  11.     char modelo[10];
  12.     char color[10];
  13.  };
  14.  
  15. void mete(struct coche *datos)
  16.   {
  17.     do
  18.       {
  19.         clrscr();
  20.         memset(((*datos).matricula),0,sizeof(((*datos).matricula)));
  21.         memset(((*datos).propietario),0,sizeof(((*datos).propietario)));
  22.         memset(((*datos).marca),0,sizeof(((*datos).marca)));
  23.         memset(((*datos).modelo),0,sizeof(((*datos).modelo)));
  24.         memset(((*datos).color),0,sizeof(((*datos).color)));
  25.         printf("Matricula: ");
  26.         gets(((*datos).matricula));
  27.         printf("Propietario: ");
  28.         gets((*datos).propietario);
  29.         printf("Marca: ");
  30.         gets((*datos).marca);
  31.         printf("Modelo: ");
  32.         gets((*datos).modelo);
  33.         printf("Color: ");
  34.         gets((*datos).color);
  35.         printf("Todo correcto?[s/n] ");
  36.       }
  37.     while (getch()!='s');
  38.   }
  39.  
  40. main()
  41.   {
  42.     struct coche datos;
  43.     FILE * files;
  44.     files=fopen("coche.txt", "w");
  45.     fwrite("Matri.  Propietario.             Marca.    Modelo.   Color.\n", 60, 1, files);
  46.     do
  47.       {
  48.         mete (&datos);
  49.         fwrite(&datos, sizeof(datos), 1, files);
  50.         fwrite("\n", 1, 1, files);
  51.         printf("\nOtro?[s/n]");
  52.       }
  53.     while (getch()!='n');
  54.   }

Aqui destaco mi parte problematica.
Código HTML:
Ver original
  1. memset(((*datos).matricula),0,sizeof(((*datos).matricula)));
  2. memset(((*datos).propietario),0,sizeof(((*datos).propietario)));
  3. memset(((*datos).marca),0,sizeof(((*datos).marca)));
  4. memset(((*datos).modelo),0,sizeof(((*datos).modelo)));
  5. memset(((*datos).color),0,sizeof(((*datos).color)));

Gracias por adelantado

Última edición por grisuco; 19/05/2010 a las 10:21