[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-0001.html>
Más información sobre la lista de distribución Cconclase