[C con Clase] Ayuda En Error Con Punteros

D1e6o! diegogeid en gmail.com
Mar Mar 13 02:16:43 CET 2007


Hola..! bueno, estoy teniendo un problema y no entiendo que es lo que está
sucediendo ya que el programa se me cierra sin ningún tipo de error. me
podrían ayudar?..

Acá va una parte del código:

typedef struct {
   int largo;
   char *nombre;
   int *datos;
} comando;
...
#define TITULO prueba
...
comando *comandoactual;

...
...
    ini=fopen("c:\\config.ini","r"); //abre el arch de config para la
lectura
    prueba=fopen("c:\\prueba.ini","w");
    if (ini == NULL || prueba==NULL)
    {
        MessageBox(hwnd, "Error al abrir el archivo",
        TITULO, MB_ICONINFORMATION | MB_OK);
        return false;
    }
...
...

comandoactual=(comando*) malloc(sizeof(comando));
...
comandoactual->nombre=(char *) malloc(strlen(cadtemp)+1);
...
strcpy(comandoactual->nombre,cadtemp); //cadtemp esta definida como array
char cadtemp[101];
...
MessageBox(hwnd, cadtemp,
            TITULO, MB_ICONINFORMATION | MB_OK);
MessageBox(hwnd, comandoactual->nombre,
            TITULO, MB_ICONINFORMATION | MB_OK);
            //hasta acá bien ya que los 2 msgbox son iguales...

comandoactual->largo=temp; //hasta acá está bien

comandoactual->datos=(int*)malloc(sizeof(int)*2); //puede que esté aca? pero
después de esto el msgbox se ejecuta intento usar como un array

MessageBox(hwnd, "Llego hasta el malloc",TITULO, MB_ICONINFORMATION |
MB_OK);

            for(cuenta=0;cuenta<temp*2;cuenta+=2)
            {
                fscanf(ini,"%d",&comandoactual->datos[cuenta]);
                fprintf(prueba, "cuenta:%d %d\n", cuenta,
comandoactual->datos[cuenta]);
                FEOFERROR("uno") //nada una macro para ver si hay un end of
file pero no lo hay porque veo el archivo de entrada
                fscanf(ini,"%d",&comandoactual->datos[cuenta+1]);
                FEOFERROR("cero")
                fprintf(prueba, "cuenta:%d %d\n", cuenta,
comandoactual->datos[cuenta]);
            }
            MessageBox(hwnd, "Después del for",TITULO, MB_ICONINFORMATION |
MB_OK); //hasta acá no llega
fclose (ini)

//a partir de aca es solo una verif a la que ni llega por tildarse antes

fprintf(prueba,"Nombre: %s, %d\n", comandoactual->nombre,
comandoactual->largo);
for(cuenta=0;cuenta<comandoactual->largo*2;cuenta+=2)
fprintf(prueba,"%d\n%d\n",comandoactual->datos[cuenta],comandoactual->datos[cuenta+1]);
fprintf(prueba,"fin");
fclose(prueba);

prueba y ini ya están abiertos.. eso está verificado, en prueba.ini no
obtengo nada, siendo que por tildarse antes debería tener aunque sea
"probando..."



Alguien podrá ayudarme? Posiblemente el error esté en la utilización del
puntero como arrays... pero esto es así? No se qué mas hacer para depurar...
me podrían ayudar? y eso de que en prueba no hay nada me deja
desconcertado... ya que no da error de inic. y se tilda después de esto
pasando otras instrucciones...

muchas gracias! Saludos!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070312/291c703c/attachment.html>


Más información sobre la lista de distribución Cconclase