[C con Clase] Ayuda En Error Con Punteros

D1e6o! diegogeid en gmail.com
Mar Mar 13 02:25:00 CET 2007


Ya está, uno de los errores estaba en malloc...

comandoactual->datos=(int*)malloc(sizeof(int)*2);

no debería ser
comandoactual->datos=(int*)malloc(sizeof(int)*2*comandoactual->largo);

Lo raro que el archivo prueba no se creaba... eso me desconcertaba, pero era
porque no lo ceraba aparentemente. Saludos! Y muchas gracias igual porque
seguramente me hubieran ayudado!

Saludos!

El día 12/03/07, D1e6o! <diegogeid en gmail.com> escribió:
>
> 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/64bcfc89/attachment.html>


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