02-20-2009 05:42 AM
Hoola: Vamos a ver, Quiero guardar los datos que escribe el usuario en un NUMERIC (llamado PASOS) en un archivo "datosguardado.txt".Quiero asociar ese NUMERIC a este archivo.Es decir, cada vez que el usuario escribe en ese NUMERIC, lo guarde en el .txt. es guardar todas las veces que se introduce "x" en NUMERIC en .txt y que al final nos aparezcan los 100 ultimos datos introducidos por el usuarioLo que he utilizado es lo siguiente:
char pathname[100];
static FILE*file_handle;
GetProjectDir(pathname);
MakePathname(pathname,"datosguardados.txt",pathname);
file_handle=fopen(pathname,"w+");
num=fprintf(file_handle,"%lf\n",x); // x es la variable donde se guarda el valor del NUMERIC que introduce el usuario. Queremos guardar "x" en el .txt//
fclose(file_handle);
Igual nos falta un for. que hemos intentado poniendo esto:
int i ;char datos[100]; for(i=0; i<100;i++) ; num=fprintf(file_handle,"lf\n",datos[i]); //siendo datos[] un char, pero no sabemos asociarlo al NUMERIC)
Gracias
02-20-2009 08:59 AM - edited 02-20-2009 09:02 AM
Hola motores,
la primera parte del código está bien, simplemente podrías cambiar el "w+" con el "a+" de manera que los datos sean añadidos al archivo sin cancelar los precedentes. Así haciendo, cada vez que se corre esa parte del código se añade una línea al archivo.
En la segunda parte (la del for) no puedes pasar un char a la fprintf puesto que "%lf\n" indica que la función va a elaborar un valor double: recibirás un error al hacerlo. Simplemente le pones double datos[100] y puedes correr el código. Esto también te simplifica puesto que puedes leer directamente del control numeric y pasarlo al array ( GetCtrlVal (panelHandle, PANEL_NUMERIC, &datos[i]) siendo "i" el índice progresivo del número que el usuario quiere archivar).
Por último, para compatibilidad con el sistema operativo, debes dimensionar a la variable pathname de manera diferente: char pathname[MAX_PATHNAME_LEN]; esto te garantiza que la variable sea lo suficientemente larga para conservar el nombre del archivo en el caso de que uses nomres largos u muchas carpetas una dentro de la otra.