Muchísimas gracias, con toda esta información me funciona la meta que tenia como programilla que quiero hacer, no lo he acabado aún pero quiza sigo posteando aqui dudas.
Muchas gracias de verdad,
Pero una ultima cosa..Dejo aqui el programa que estoy haciendo, es diferente de lo vuestro y me gustaria saber si no tiene ningun error garrafal que me de problemas más adelante.
Reto: Además estoy viendo que para 20k datos me tarda unos segundos, querria saber si hay alguna forma de acortar el tiempo de ejecución pues mis ficheros de datos tienen 200k datos y son muchos ficheros...
Pues dicho esto, os comento:
-El programa recibe un dichero datos.txt que es de una sola columna y que es de este tipo:
611.1118
611.6466
612.8956
611.8088
615.3070
614.8684
....ETC... (hasta 20K datos así)
-Este programa recoge este fichero, yo modifico (en este caso con una multiplicación) estos datos (pasandolos a int previamente) y los multiplico por dos por ejemplo y luego volviendolos a convertir.
-Por ultimo recibo un fichero salida.txt como el siguiente:
1222.223600
1223.293200
1225.791200
1223.617600
1230.614000
1229.736800
1232.356000
...ETC...(Así hasta los 20k datos)
Mi codigo que funciona es este:
//programa para obtener archivos y modificarlos guardandolos en nuevos archivos.
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <fstream>
using namespace std;
// Funcion que hace algo
char nombre_fichero();
int main(){
FILE *fichero;
FILE *fichero2;
char nombre[11] = "datos.txt";
char nombre2[11]= "salida.txt";
char leer[1000];
fichero = fopen( nombre, "r" ); // Fichero datos.txt desde el que leo los datos.
fichero2= fopen( nombre2, "w"); // Fichero salida.txt donde escribire los datos.
if ( fichero == NULL ) {
printf( "Fichero '%s' no se pudo abrir.\n", nombre ); /* error */
return -1;
}
if ( fichero2 == NULL ) {
printf( "Fichero '%s' no se pudo abrir.\n", nombre2 ); /* error */
return -1;
}
int i=0,n=20000;
double numero,numerof;
while(i<n) //detecta cuando acaba la informacion del fichero datos.txt
{
fgets(leer,1000000,fichero); //lee una linea del fichero , la guarda en leer y pasa a la siguiente linea
numero = atof (leer);// convierto un char en un int
//Aqui hago las modificaciones
numerof =numero*2;
printf("%s %f \n", leer, numerof);
sprintf(leer, "%f\n",numerof);
// Escribo lo anterior al fichero2
fputs(leer,fichero2);
i++;
}
fclose(fichero); //cierra fich datos.txt
getchar();
return 0;
}
Un saludete, a ver quien es el
crack que me dice por donde van los tiros para acortarle tiempo! y Gracias!
EDITO: El programa lo necesitamos aqui en el departamento de electronica para hacer transformadas de fourier de señales, multiplicar por dos es una mera prueba para ver la conversión de datos.