error - null pointer assigment ALGUIEN PUEDE AYUDARME????
esto me da error, alguien sabe que puede ser????
void grabar_medidor (void)
{
FILE *pft20;
char nombremed[15];
char *strLineMed;
strLineMed= (char *) malloc(sizeof(char)*100);
if (medi == TRUE)
{
pft20 = fopen("medidor.dat", "r");
fgets(nombremed,13,pft20);
fclose(pft20);
flushall();
free(strLineMed);
pft20 = fopen(nombremed, "a");
strcpy(strLineMed,"");
FormaReg(strLineMed,fili,4,1);
FormaReg(strLineMed,zona,3,1);
FormaReg(strLineMed,ruta,4,1);
FormaReg(strLineMed,ctau,7,1);
FormaReg(strLineMed,numedidor,12,1);
FormaReg(strLineMed, um,3,1);
FormaReg(strLineMed, marca,3,1);
FormaReg(strLineMed, diametro,5,1);
fprintf(pft20,"%sn",strLineMed);
fclose(pft20);
}
}
void grabar_medidor (void)
{
FILE *pft20;
char nombremed[15];
char *strLineMed;
strLineMed= (char *) malloc(sizeof(char)*100);
if (medi == TRUE)
{
pft20 = fopen("medidor.dat", "r");
fgets(nombremed,13,pft20);
fclose(pft20);
flushall();
free(strLineMed);
pft20 = fopen(nombremed, "a");
strcpy(strLineMed,"");
FormaReg(strLineMed,fili,4,1);
FormaReg(strLineMed,zona,3,1);
FormaReg(strLineMed,ruta,4,1);
FormaReg(strLineMed,ctau,7,1);
FormaReg(strLineMed,numedidor,12,1);
FormaReg(strLineMed, um,3,1);
FormaReg(strLineMed, marca,3,1);
FormaReg(strLineMed, diametro,5,1);
fprintf(pft20,"%sn",strLineMed);
fclose(pft20);
}
}
¿cuál es el mensaje de error?
Así como está, yo no me doy cuenta qué puede estar mal. Donde escribes:
fgets(nombremed,13,pft20);
estás poniendo los primeros 12 caracteres leidos desde pft20 más un cero, o la cantidad de caracteres hasta un salto de línea (incluido), lo que se encuentre antes. ¿Es esa la intensión?
Alejandro
Así como está, yo no me doy cuenta qué puede estar mal. Donde escribes:
fgets(nombremed,13,pft20);
estás poniendo los primeros 12 caracteres leidos desde pft20 más un cero, o la cantidad de caracteres hasta un salto de línea (incluido), lo que se encuentre antes. ¿Es esa la intensión?
Alejandro
ok, tenes razon, te explico
void grabar_medidor (void)
{
FILE *pft20;
char nombremed[15];
char *strLineMed;
strLineMed= (char *) malloc(sizeof(char)*100);
if (medi == TRUE)
{
pft20 = fopen("medidor.dat", "r"); /*lo que contiene el archivo es el nombre del archivo a crear */
fgets(nombremed,13,pft20);
fclose(pft20);
flushall();
free(strLineMed);
pft20 = fopen(nombremed, "a");
/*creo el archivo con el nombre que cargue*/
strcpy(strLineMed,"");
/* la funcion FormaReg, simplemente va creando una linea la cual es creada por varias variables anteriormente cargadas*/
FormaReg(strLineMed,fili,4,1);
FormaReg(strLineMed,zona,3,1);
FormaReg(strLineMed,ruta,4,1);
FormaReg(strLineMed,ctau,7,1);
FormaReg(strLineMed,numedidor,12,1);
FormaReg(strLineMed, um,3,1);
FormaReg(strLineMed, marca,3,1);
FormaReg(strLineMed, diametro,5,1);
fprintf(pft20,"%sn",strLineMed);
fclose(pft20);
/* he detectado que hasta aqui todo funciona bien en la pc, pero cuando esta en el handheld tengo el problema (el handheld es un radix) */
}
}
talvez me podes ayudar a enterder la administracion de la memoria si este fuese el caso
gracias por tu tiempo
void grabar_medidor (void)
{
FILE *pft20;
char nombremed[15];
char *strLineMed;
strLineMed= (char *) malloc(sizeof(char)*100);
if (medi == TRUE)
{
pft20 = fopen("medidor.dat", "r"); /*lo que contiene el archivo es el nombre del archivo a crear */
fgets(nombremed,13,pft20);
fclose(pft20);
flushall();
free(strLineMed);
pft20 = fopen(nombremed, "a");
/*creo el archivo con el nombre que cargue*/
strcpy(strLineMed,"");
/* la funcion FormaReg, simplemente va creando una linea la cual es creada por varias variables anteriormente cargadas*/
FormaReg(strLineMed,fili,4,1);
FormaReg(strLineMed,zona,3,1);
FormaReg(strLineMed,ruta,4,1);
FormaReg(strLineMed,ctau,7,1);
FormaReg(strLineMed,numedidor,12,1);
FormaReg(strLineMed, um,3,1);
FormaReg(strLineMed, marca,3,1);
FormaReg(strLineMed, diametro,5,1);
fprintf(pft20,"%sn",strLineMed);
fclose(pft20);
/* he detectado que hasta aqui todo funciona bien en la pc, pero cuando esta en el handheld tengo el problema (el handheld es un radix) */
}
}
talvez me podes ayudar a enterder la administracion de la memoria si este fuese el caso
gracias por tu tiempo
No, me confundí.
> free(strLineMed);
> pft20 = fopen(nombremed, "a");
> strcpy(strLineMed,"");
> FormaReg(strLineMed,fili,4,1);
> FormaReg(strLineMed,zona,3,1);
> ... ... ...
Estas escribiendo en memoria que ya fue liberada al sistema.
Alejandro
> free(strLineMed);
> pft20 = fopen(nombremed, "a");
> strcpy(strLineMed,"");
> FormaReg(strLineMed,fili,4,1);
> FormaReg(strLineMed,zona,3,1);
> ... ... ...
Estas escribiendo en memoria que ya fue liberada al sistema.
Alejandro
