elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda al escribir ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 Ir Abajo Respuesta Imprimir
Autor Tema: Duda al escribir ficheros  (Leído 12,523 veces)
Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #20 en: 25 Marzo 2014, 11:40 am »

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!  :-[

Código
  1. //programa para obtener archivos y modificarlos guardandolos en nuevos archivos.
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <math.h>
  7. #include <string.h>
  8. #include <fstream>
  9.  
  10. using namespace std;
  11.  
  12. int main(){
  13.  
  14.    FILE *fichero;
  15. FILE *fichero2;
  16.  
  17.   char nombre[11] = "datos.txt";
  18.   char nombre2[11]= "salida.txt";
  19.  
  20.   fichero = fopen( nombre, "r" );  // Fichero datos.txt desde el que leo los datos.
  21.   fichero2= fopen( nombre2, "w");  // Fichero salida.txt donde escribire los datos.
  22.  
  23.   if ( fichero == NULL ) {
  24.      printf( "Fichero '%s' no se pudo abrir.\n", nombre ); /* error */
  25.      return -1;
  26. }
  27.   if ( fichero2 == NULL ) {
  28.      printf( "Fichero '%s' no se pudo abrir.\n", nombre2 ); /* error */
  29.      return -1;
  30. }
  31.  
  32. char leer[1000];
  33. double numero,numerof;
  34.  
  35. while (fgets(leer, 1000, fichero) != NULL) //detecta cuando acaba la informacion del fichero datos.txt
  36. {                                        
  37. fgets(leer,1000,fichero); //lee una linea del fichero , la guarda en leer y pasa a la siguiente linea
  38. numero = atof (leer);// convierto un char en un int
  39. //Aqui hago las modificaciones
  40. numerof = numero*1;
  41. sprintf(leer, "%f\n",numerof); // convierto double a string
  42. // Escribo lo anterior al fichero2
  43. fputs(leer,fichero2);
  44. }
  45. fclose(fichero);  //cierra fich datos.txt
  46. fclose(fichero2);
  47.  
  48. getchar();
  49. return 0;
  50. }


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 Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #21 en: 25 Marzo 2014, 11:45 am »

Código
  1. while (fgets(leer, 1000, fichero) != NULL) //detecta cuando acaba la informacion del fichero datos.txt
  2. {                                        
  3. 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 Desconectado

Mensajes: 21



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #22 en: 25 Marzo 2014, 13:45 pm »

Ostras vale,
pense que dentro del while no se ejecutaba nada.. jojo
entonces ya está perfecto!!
entendi mal a amchacon!!

Gracias de nuevo!  ;D
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 Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #23 en: 25 Marzo 2014, 15:23 pm »

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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NAME_IN   "datos.txt"
  5. #define NAME_OUT  "salida.txt"
  6.  
  7. int main(void)
  8. {
  9.   FILE *in;
  10.   FILE *out = NULL;
  11.   int rv = EXIT_FAILURE;
  12.   double num;
  13.  
  14.   if ((in = fopen(NAME_IN, "r")) == NULL)
  15.      perror(NAME_IN);
  16.   else if ((out = fopen(NAME_OUT, "w")) == NULL)
  17.      perror(NAME_OUT);
  18.   else {
  19.      while (fscanf(in, "%lf", &num) == 1 && fprintf(out, "%f\n", num * 2.0) >= 0)
  20.         ;
  21.  
  22.      if (!ferror(in) && !ferror(out))
  23.         rv = EXIT_SUCCESS;
  24.   }
  25.  
  26.   if (in != NULL)
  27.      fclose(in);
  28.   if (out != NULL)
  29.      fclose(out);
  30.  
  31.   return rv;
  32. }

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 Desconectado

Mensajes: 21



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #24 en: 28 Marzo 2014, 15:48 pm »

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 Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #25 en: 31 Marzo 2014, 13:01 pm »

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

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #26 en: 31 Marzo 2014, 13:30 pm »

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 Desconectado

Mensajes: 21



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #27 en: 31 Marzo 2014, 14:24 pm »

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é..  :rolleyes:
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 Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #28 en: 1 Abril 2014, 00:44 am »

Ya no uso excel desde hace tiempo pero... ¿No se puede exportar todo el contenido como cadena de texto?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #29 en: 1 Abril 2014, 17:15 pm »

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!
Páginas: 1 2 [3] 4 Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 12 Julio 2005, 08:54 am
por maxnet
Duda :Escribir en la BIOS
Programación Visual Basic
Krnl64 3 2,248 Último mensaje 29 Mayo 2006, 22:45 pm
por Krnl64
Duda con ficheros y structs en C
Programación C/C++
chica_23 9 5,418 Último mensaje 19 Marzo 2011, 20:24 pm
por chica_23
Duda ficheros c++
Programación C/C++
oskrg55 3 2,113 Último mensaje 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 Último mensaje 30 Noviembre 2016, 23:56 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines