Autor
|
Tema: Duda al escribir ficheros (Leído 12,523 veces)
|
Feynmann
Desconectado
Mensajes: 21
|
Perfecto, lo he notado muchísimo! Gracias amchacon! Solo veo un defecto y es serio! : Me está cogiendo cada dos numeros, es decir los numeros impares en posicion de fila no me los coge, lo que no se por que! //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; int main(){ FILE *fichero; FILE *fichero2; char nombre[11] = "datos.txt"; char nombre2[11]= "salida.txt"; 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; } char leer[1000]; double numero,numerof; while (fgets(leer, 1000, fichero) != NULL) //detecta cuando acaba la informacion del fichero datos.txt { fgets(leer,1000,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*1; sprintf(leer, "%f\n",numerof); // convierto double a string // Escribo lo anterior al fichero2 fputs(leer,fichero2); } fclose(fichero); //cierra fich datos.txt fclose(fichero2); getchar(); return 0; }
|
|
|
En línea
|
Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
while (fgets(leer , 1000, fichero ) != NULL ) //detecta cuando acaba la informacion del fichero datos.txt { fgets(leer ,1000,fichero ); //lee una linea del fichero , la guarda en leer y pasa a la siguiente linea
dos fgets seguidos?? con esto estas perdiendo la primera lectura.
|
|
|
En línea
|
|
|
|
Feynmann
Desconectado
Mensajes: 21
|
Ostras vale, pense que dentro del while no se ejecutaba nada.. jojo entonces ya está perfecto!! entendi mal a amchacon!! Gracias de nuevo!
|
|
|
En línea
|
Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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. Lo primero que debes hacer es decidir que lenguaje vas a aprender, si este es C++ enfocate en el sin mezclarlo con C. -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) Si tienes garantizada la estructura del archivo de entrada no tienes porque utilizar fgets para leer una linea ya que lo único que haces con ella es extraer el valor numérico. Este lo puedes obtener directamente con fscanf, de forma similar puedes imprimirlo con fprintf en lugar del par sprintf + puts. El programa en C con esos y otros cambios: #include <stdio.h> #include <stdlib.h> #define NAME_IN "datos.txt" #define NAME_OUT "salida.txt" int main(void) { FILE *in; FILE *out = NULL; int rv = EXIT_FAILURE; double num; if ((in = fopen(NAME_IN , "r")) == NULL ) else if ((out = fopen(NAME_OUT , "w")) == NULL ) else { while (fscanf(in , "%lf", &num ) == 1 && fprintf(out , "%f\n", num * 2.0) >= 0) ; rv = EXIT_SUCCESS; } if (in != NULL) if (out != NULL) return rv; }
Editado: faltaba un carácter '=' en la condición del bucle, ya esta corregido Un saludo
|
|
« Última modificación: 26 Marzo 2014, 03:58 am por rir3760 »
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
Feynmann
Desconectado
Mensajes: 21
|
El problema que la estructura de datos no siempre es la misma, creo que me quedaré con lo que ya tengo.
Otro tema, llevo buscando un buen rato y no encuentro nada.
Si en vez de los ficheros en .txt los tengo en un excell, que funcion debo utilizar para exportar los datos tal y como he hecho a lo largo del hilo?
Un saludooo
El problema que la estructura de datos no siempre es la misma, creo que me quedaré con lo que ya tengo.
Otro tema, llevo buscando unos dias y no se por donde empezar!
Si en vez de los ficheros en .txt los tengo en un excell, que funcion debo utilizar para exportar los datos tal y como he hecho a lo largo del hilo?
Un saludooo
|
|
« Última modificación: 31 Marzo 2014, 14:05 pm por Eternal Idol »
|
En línea
|
Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Copia y pega la columna del excel en un txt.
PD: El excel es un formato de Microsoft office, tienes dos opciones:
- Estudiarte como esta estructurado. Y entonces lo lees a pelo con fread(). - Usar una librería de terceros que ya haya hecho ese trabajo por ti (desconozco si existe, pero no creo exista una gratis al ser un formato no-libre).
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Copia y pega la columna del excel en un txt.
PD: El excel es un formato de Microsoft office, tienes dos opciones:
- Estudiarte como esta estructurado. Y entonces lo lees a pelo con fread(). - Usar una librería de terceros que ya haya hecho ese trabajo por ti (desconozco si existe, pero no creo exista una gratis al ser un formato no-libre).
Microsoft tiene una API que permite leer y escribir en ficheros Excel, lo que pasa es que la que yo conozco está preparada para .NET. Desconozco si dispone de un homólogo para C o C++... eso si, con el wrapper adecuado se puede hacer funcionar en C++ nativo sin problemas. Con respecto al formato... desde 2007 los formatos de excel cambiaron su extensión a xlsx. Este formato es, en realidad, un fichero comprimido (con zip creo recordar). En su interior se encuentran varios archivos xml que contienen los datos de la configuración del libro y del contenido de las diferentes hojas.
|
|
|
En línea
|
|
|
|
Feynmann
Desconectado
Mensajes: 21
|
Dios mio.. vaya trabajo me espera.. Resulta que los Excell tienen varias hojas y además muchisimos datos, a mano es imposible. voy a ver si encuentro algo.. uff Muchísimas gracias por comentarme las alternativas. Da gusto este foro, sin duda. El día que pueda aportar yo algo lo haré..
|
|
|
En línea
|
Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Ya no uso excel desde hace tiempo pero... ¿No se puede exportar todo el contenido como cadena de texto?
|
|
|
En línea
|
|
|
|
Feynmann
Desconectado
Mensajes: 21
|
Como cadena de texto, no entiendo. Para que te imagines los archivos son del tipo
Un archivo Excell con muchas hojas, y en cada hoja 3 columnas con datos.
|
|
|
En línea
|
Novato curioso, me gustaria aprender a programar bien en C/C++ por eso estoy aqui. Pero puedo echar una mano a cualquiera que me lo pida en temas de electronica!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Una duda en vb...Como puedo escribir datos en un tag con vb???Ayudenme plz,thx!
Programación Visual Basic
|
ZaPa
|
3
|
2,118
|
12 Julio 2005, 08:54 am
por maxnet
|
|
|
Duda :Escribir en la BIOS
Programación Visual Basic
|
Krnl64
|
3
|
2,248
|
29 Mayo 2006, 22:45 pm
por Krnl64
|
|
|
Duda con ficheros y structs en C
Programación C/C++
|
chica_23
|
9
|
5,418
|
19 Marzo 2011, 20:24 pm
por chica_23
|
|
|
Duda ficheros c++
Programación C/C++
|
oskrg55
|
3
|
2,113
|
10 Agosto 2015, 17:14 pm
por ivancea96
|
|
|
[C] Se puede leer y escribir en dos ficheros desde un mismo programa?
Programación C/C++
|
LoQueSeaPI
|
1
|
1,746
|
30 Noviembre 2016, 23:56 pm
por engel lex
|
|