Foros del Web » Programación para mayores de 30 ;) » Programación General »

Consulta sobre C (funcion del tipo void + descargar archivo dat + punteros)

Estas en el tema de Consulta sobre C (funcion del tipo void + descargar archivo dat + punteros) en el foro de Programación General en Foros del Web. Bueno gente, espero que alguien pueda contestarme esto porque es para la facultad. El ejercicio no tiene una aplicación útil, pero tengo que saberlo porque ...
  #1 (permalink)  
Antiguo 16/11/2004, 07:34
 
Fecha de Ingreso: diciembre-2003
Mensajes: 41
Antigüedad: 20 años, 4 meses
Puntos: 0
Consulta sobre C (funcion del tipo void + descargar archivo dat + punteros)

Bueno gente, espero que alguien pueda contestarme esto porque es para la facultad. El ejercicio no tiene una aplicación útil, pero tengo que saberlo porque pueden tomarlo...

El tema es que necesito crear una función para leer y descargar en memoria un archivo cualquiera, imagínense un .dat que tiene dentro datos de un concesionario de autos. El tema es que tiene que ser de tipo Void, o sea, que no devuelve nada (no tiene return), solamente lee el archivo.
PERO despué tengo que usar los datos de dicho archivo, por lo cual creo que la única manera que se puede hacer es descargarla en un vector que esté asociado a una dir. de memoria y después usarla con un puntero.

Estoy en lo cierto???
  #2 (permalink)  
Antiguo 16/11/2004, 12:49
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
A ver que te parece esta solución:

Código:
#include <windows.h>

void Leer(char *archivo, char **memoria);

void main()
{
  char *mem = 0;
  Leer("c:\\tmp.txt", &mem);
  if (mem) { MessageBox(0, mem, mem, 0); }
  free(mem);
}

void Leer(char *archivo, char **memoria)
{
  HANDLE FileHandle = CreateFile(archivo, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if (FileHandle != INVALID_HANDLE_VALUE)
  {
    DWORD DSize = GetFileSize(FileHandle, 0);
    DWORD read = 0;
    *memoria = (char*)malloc(DSize + 1);
    ZeroMemory(*memoria, DSize + 1);
    ReadFile(FileHandle, *memoria, DSize, &read, 0);
  }
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:52.