Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Convertir una variable char en dos doubles!!!

Preguntas y respuestas sobre el lenguaje de programacion C/C++

Convertir una variable char en dos doubles!!!

Notapor ferri_mar el Vie Sep 29, 2006 5:02 am

Hola a todos!!
Bueno, como veis soy nueva aqui...
Os explico: estoy haciendo un programa tal que quiero que de un dichero(datos.txt) con formato:

1 1
2 2
3 3

lea cada linea(registro),e identifique en cada una px y py,de modo que las guarde en px[1],py[1], px[2],py[2], px[3],py[3].

hasta aqui, lo tengo mas o menos claro, pero el problema aparece cuando al definir las variables px,py, registro al inicio necesito que px,pu sean del tipo double!!(luego las voy a utilizar en otro sitio).

En fin, que este es mi codigo:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

#define N_P 3

int main()

{
FILE *fp,*fp_sal;
char registro[200][N_P];
int i;
double px[N_P],py[N_P];

fp=fopen("c:\\devcpp_fin\\datos\\datos.txt","r");
fp_sal=fopen("c:\\devcpp_fin\\datos\\salida.txt","w");

for(i=0;i<N_P;i++)
{
fgets(registro[i],200,fp);
sscanf(registro,"%d%d",&px[i],&py[i]);

fprintf(fp_sal,"%d %d\n",px[i],py[i]);

}
}

lo que ocurre es que el fichero de salida generado tiene la forma:
1 (numero raro)
2 (numero raro)
3 (numero raro)

En cambio si en el inicio defino px,py como int lo escribe perfectamente!!
Me podeis explicar por que??
necesito que px,py sean doubles!!!

podeis ayudarme???
ferri_mar
Novato
Novato
 
Mensajes: 6
Registrado: Vie Sep 29, 2006 4:50 am

Aqui algo que ayudarte

Notapor MicroLogic©Software el Mar Oct 03, 2006 12:50 pm

revisa este programa :

Código: Seleccionar todo


//
// MicroLogic ¸ Software Corp.
//
//  Programa Lector de archivos...
//

#include <stdio.h>


void main()
{
    float pX[100], pY[100];

    FILE *f1 = fopen( "numeros.txt", "rb" );
   if( !f1 ) return;

    // NOTA : es necesario especificar
    // cuantas vueltas o iteraciones
    // tendremos que hacer el leer el
    // fichero
    //
    for( int i=0;i<3;i++)
        fscanf( f1,"%f %f", &pX[i],&pY[i] );
    fclose( f1 );

    // muestrame los numeros
    for( i=0;i<3;i++)
      printf( "\r\n %d =  %d  %d", i, (int)pX[i], (int)pY[i] );
    // (int)  es necesario convertir los tipos float a int

    // modo sin %d
    // printf( "\r\n %d =  %2.2f  %2.2f", i, (int)pX[i], (int)pY[i] );
    //
    // OJO  %2.2f   obtiene numeros como 10.20  ,  05.12 ,  6.18
}

Avatar de Usuario
MicroLogic©Software
Usuario Activo
Usuario Activo
 
Mensajes: 45
Registrado: Mar Abr 05, 2005 1:57 pm


Volver a C/C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados