Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2016, 12:58
shekel
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 6 meses
Puntos: 0
Asignar de una sola vez datos a varios miembros

Estoy en mi andadura de aprender c y ahora me he topado con otro problema, aunque tambien es una cuestion que no se si se puede hacer..

Tengo un archivo de una longitud fija y los datos que tiene coincide con una estructura que tengo en el programa..
La longitud del archivo es de 4 bytes, los 2 primeros corresponden al segundo miembro de la funcion y los bytes 3 y 4 corresponden al tercer miembro.

Podria al leer el archivo colocar estos datos directamente dentro de la estructura y sin ir metiendolos miembro por miembro?

Código C:
Ver original
  1. // El archivo al que hace referencia t1 contiene estos bytes: 20 21 22 23
  2. // t1 es la ruta de mi archivo
  3. HANDLE hFile = CreateFile(t1, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  4. if (hFile == INVALID_HANDLE_VALUE) return ;
  5.  
  6. DWORD dwBytesRead = 0;
  7. char *buffer = (char*)calloc(sizeof(char), 4);
  8. ReadFile(hFile, buffer, 4, &dwBytesRead, NULL);
  9. // Ahora en buffer tengo el archivo al completo
  10.  
  11. // Mi estructura es esta...
  12. struct estructura {
  13.     struct otra_estructura otraestructura;
  14.     byte primeros    [2];
  15.     byte segundos  [2];
  16. };
  17.  
  18. estructura mystruct[4];  // Declaro 4 porque son 4 archivos aunque vamos ahora con el primero
  19. // Me gustaria saber si es posible hacer algo como en una de estas dos opciones
  20. // 1)
  21. mystruct[0],primeros = buffer[0-2]; // Algo asi como indicar la posicion inicial y final del buffer y asignarselo al miembro de la estructura
  22. mystruct[0].segundos = buffer[2-4];
  23. // 2) o bien haciendolo de esta manera,
  24. // Cogemos la posicion de memoria donde esta estructura[0].primeros y sabiendo que los primeros bytes correspondonden a ese miembro y los siguientes dos a estructura[0].segundos.
  25. // hacer algo como....
  26. mystruct[0].primeros = buffer;

Lamento no ser mas preciso, pero mi nivel de c/c++ es minimo, se lo que son los punteros pero a la hora de escribir codigo me siguo confundiendo.

Gracias