Debe estar conectado para participar
Buscar en los foros:


 






Uso de Comodín:
*    coincide cualquier número de caracteres
%    coincide exactamente un caracter

Problemas con fprintf y variables float

No hay Etiquetas
Entrada
Midle End Level

aleluis

entradas: 206

00:58 20/08/2008

1

Hola gente ojala puedan ayudarme, estoy haciendo un programa el cual genera salida de archivos .txt (de texto) en el cual guardo los datos separados con , (coma) para despues abrirlo con el excel y asi generar una planilla, mientras la variable float esta en 0.000000 los datos se van grabando en el archivo sin ningun tipo de problemas, pero cuando la variable float tiene algún valor cualquiera que sea me tira error.
Ya probe haciendolo con .dat (binarios) pero el excel no reconoce los formatos de variables numericas y no me sirve.

char metodo[6][12]={"BURB","FUS","INS","QUICK_SORT","SELECCION","SHE LL"};
char tipo_est[3][11]={"ENTEROS","128_BYTES","256_BYTES"};
char tipo_vec[3][15]={"MEJOR_CASO","PEOR_CASO","CASO_PROMEDIO"};
FILE *txt;
grabar xx;
strcpy(xx.metodo,metodo[sel_algoritmo-1]);
strcpy(xx.tipo_est,tipo_est[sel_estructura-1]);
strcpy(xx.tipo_vec,tipo_vec[tipo_vector-1]);
xx.cant_pos=cant_registros;
xx.tiempo=tiempo;
xx.salto='\n';
switch(sel_estructura)
{
case 1:
switch(tipo_vector)
{
case 1:
txt=fopen("c:\\mejorvector.txt","at+&quotwink;
break;
case 2:
txt=fopen("c:\\peorvector.txt","at+&quotwink;
break;
case 3:
txt=fopen("c:\\aleavector.txt","at+&quotwink;
break;
}
break;
case 2:
switch(tipo_vector)
{
case 1:
txt=fopen("c:\\mejor128.txt","at+&quotwink;
break;
case 2:
txt=fopen("c:\\peor128.txt","at+&quotwink;
break;
case 3:
txt=fopen("c:\\alea128.txt","at+&quotwink;
break;
}
break;
case 3:
switch(tipo_vector)
{
case 1:
txt=fopen("c:\\mejor256.txt","at+&quotwink;
break;
case 2:
txt=fopen("c:\\peor256.txt","at+&quotwink;
break;
case 3:
txt=fopen("c:\\alea256.txt","at+&quotwink;
break;
}
break;
}
if(!txt)
error_asignacion();

fprintf(txt,"%s;%s;%s;%3.3f;%d;%c",xx.tipo_vec,xx. tipo_est,xx.metodo,xx.tiempo,xx.cant_pos,xx.salto);
getch();
fclose(txt);

Basicamente esta es la funsion de la que estoy hablando, son metodos de ordenamiento para distintos tipos de datos, y aca estoy guardando los datos generados.

Desde ya muchas gracias.
en rojo esta la variable que al momento de tener un valor me genera error.
Probe tambien asignandole un valor constante ej: 1.563 y en ese caso no hubo problemas.

Un proceso……. es un programa en ejecución
El 2009 será mejor…..

Extreme Level

bartolo

entradas: 1393

01:19 20/08/2008

2

No se entiende mucho el código pero…

Que tipo de variable es grabar? El switch esta mal usado….fijate que lo que esta dentro del switch, o sea la condición, tiene que ser un numero entero…
El modelo sería:

swicth ( condicion) {

case 1: …
break;
case 2….
break;

default: …. }

Además te faltaría verificar que el archivo se pudo abrir comparando lo que devuelve el puntero a file contra NULL tengo entendido…

Midle End Level

aleluis

entradas: 206

00:50 21/08/2008

3

El switch se maneja con un entero, el problema es que el archivo habre en ciertos casos y en otros no, segun el metodo de ordenamiento que elija, tambien prove generando un unico archivo en el que guardo todos los datos, si elijo por ejemplo ENTEROS,PEOR CASO,FUSION y la variable tiempo registra un valor no tengo problemas y me abre el archivo pero si elijo ENTEROS, MEJOR CASO,BURBUJEO y la variable tiempo genera un valor no me lo abre y tira error al intentar abrir el archivo para adicionar datos. Realmente no se que carajo le pasa.

Un proceso……. es un programa en ejecución
El 2009 será mejor…..

Hardcore Extreme Level

alesio_sps

entradas: 3452

14:59 21/08/2008

4

Que IDE o compilador usas?? te fijaste que te tome nombre de archivos de mas de 8 caracteres, porque sino, a algunos de esos no te los va a abrir, ponele un poco de control de errores a la apertura de archivos tipo:
FILE *archivo;
if ((archivo=fopen("codpro~1.txt","r&quotwink)==NULL)
{
window (20,19,61,20);
textbackground (2);
textcolor (0);
cprintf("Error no se encontro el archivo \n&quotwink;

cosa de que por lo menos te controle si abre o no…