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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  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,524 veces)
Feynmann

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Duda al escribir ficheros
« en: 23 Marzo 2014, 16:03 pm »

Buenas tardes,
Presentare mi codigo y a continuación las dudas , (He buscado en google y en este foro, lo he intentado pero no me acabo de aclarar)


Lo primero de todo, estoy intentado hacer un programa que recoja datos de un fichero (hago modificaciones oportunas) y me los escribe en otro, para ello he empezado por algo facilito para entenderlo.
Código
  1.  
  2. #include <iostream>
  3. #include <fstream>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.  
  10. /*Leo fichero datos*/
  11. ifstream fin("datos.txt"); // Situando un cursor al inicio del fichero
  12. string nombre;
  13. int numero;
  14. fin >> nombre >> numero; // los datos se obtienen del fichero txt
  15.  
  16. /*Escribo fichero salida.txt*/
  17.  
  18. ofstream fout("salida.txt");
  19. fout << nombre << " " << numero*2;
  20.  
  21. getchar();
  22. return 0;
  23. }
  24.  

Preguntas:
1) No me reconoce el string, y me obliga a crear una variable tal que char nombre[10] por ejemplo. ¿Que le falta a mi codigo?

2) He conseguido hacer que me lea una linea del fichero .txt que es de la siguiente forma:
Código:
Felipe 14
Como puedo conseguir que me lea con saltos de linea, es decir que me lea un fichero de este tipo
Código:
felipe 14
Marcos 15
Duna 0129
He estado mirando y no se que funcion o que usar! :(

3)
Igual que la pregunta 2, pero para escribirlo en el fichero.

A ver si me podeis decir por donde van los tiros y lo sigo intentando. Gracias!! :)


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 #1 en: 23 Marzo 2014, 16:15 pm »

1º ¿No te reconoce el string? Pues sintácticamente está correcto Oo

2º Para leer líneas enteras se usa getline:
Código
  1. getline(archivo,string);

También se puede leer directamente por read():
http://www.cplusplus.com/reference/istream/istream/read/

Esa es una lectura literal.

3º Escribe las líneas que vas leyendo. Puedes los saltos de línea que creas necesario.


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
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #2 en: 23 Marzo 2014, 17:13 pm »

No me reconoce el string, y me obliga a crear una variable tal que char nombre[10] por ejemplo. ¿Que le falta a mi codigo?
Antes de utilizar la clase string debes incluir el encabezado correspondiente con:
Código
  1. #include <string>

Un saludo
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
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #3 en: 23 Marzo 2014, 17:28 pm »

¿Seguro? A mi siempre me lo coge con iostream.
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
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda al escribir ficheros
« Respuesta #4 en: 23 Marzo 2014, 17:46 pm »

¿Seguro? A mi siempre me lo coge con iostream.
Revisando el tema lo usual, como bien indicas, es que funcione pero para estar completamente seguros mejor incluir el encabezado.

Una discusión sobre ello en comp.lang.c++.moderated es Is the string header file required?.

Un saludo
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 #5 en: 23 Marzo 2014, 18:40 pm »

Perfecto, muchas gracias.

Efectivamente, se necesita el encabezado.
por otro lado, probare la funcion getline, y os digo si sigo teniendo problemas!

Un saludo!
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 #6 en: 23 Marzo 2014, 18:49 pm »

Por cierto es importante distinguir entre lectura en modo texto y lectura binaria.

Lo que estás haciendo ahí es lectura en modo texto, el programa lee las cifras y las interpreta.

Pero también cabe guardar la cifra a "palo seco":
Código
  1. int b;
  2.  
  3. ofstream escritura("texto.bin");
  4. escritura.write((char*) &b,sizeof(int));

Si abrimos el archivo con un bloc de notas no veremos nada pero ahí está el número guardado.

Leyendolo sería parecido:
Código
  1. int b;
  2.  
  3. ifstream escritura("texto.bin");
  4. escritura.read((char*) &b,sizeof(int));

Este modo de lectura es "más natural" para el programa, los datos suelen ocupar menos espacio y la lectura y escritura es más rápida (ya que no tienen que reinterpretarlo como texto).

¿Cual usar? Pues depende de tus necesidades por supuesto, si quieres que el archivo pueda ser leído por humanos entonces usa los operadores >> y << que has usado antes.

Para ser leído por programas es mejor esta opción.
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 #7 en: 23 Marzo 2014, 21:38 pm »

amchacon, me viene de perlas que me pre-avises!

Te comento para que lo necesito y me aconsejas, para empezar no soy estudiante, estoy trabajando y trabajo con archivos de txt llenos de columnas de datos, te hablo de columnas que van de 32K a 200K datos.

Lo que quiero hacer es extraerlos, aplicarles ciertas formullillas y meterlos en otro .txt

Me aconsejas entonces que lo haga en binario? Aunque has de saber que:
El .txt inicial esta en ASCII y el final tambien lo debe de estar...

Es decir, ASCII->Binario- modifico en binario -> ASCII es lo que me aconsejas?
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 #8 en: 23 Marzo 2014, 21:42 pm »

Si trabajas con ficheros txt llenos de datos olvida lo que he dicho y procede como siempre.

¿Razón? Pues que no tienes los números en binario sino en formato ASCII.
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 #9 en: 24 Marzo 2014, 11:33 am »

Bueno, he estado trasteando y a parte de modificarlo todo creo que me he liado más, os comento:

El objetivo del programa es leer columnas con muchisimos datos de un Datos.txt, (luego los modificare) y a continuación los meto en un salida.txt

Como primera meta me he planteado el siguiente programa donde uso el fwrite para escribir lo que leo con el getline...

El problema que me da errores y no me compila, que me está fallando?

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdio>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.  
  10. FILE *fichero;
  11. FILE *fichero2;
  12.  
  13.   char nombre[11] = "datos.txt";
  14.   char nombre2[11]= "salida.txt";
  15.  
  16.   fichero = fopen( nombre, "r+" );  // Fichero datos.txt desde el que leo los datos.
  17.   fichero2= fopen( nombre2, "w+");  // Fichero salida.txt donde escribire los datos.
  18.  
  19.   // Pijada para ver si me lo está abriendo o no
  20.   printf( "Fichero: %s -> ", nombre );
  21. if( fichero )
  22. printf( "creado (ABIERTO)\n" );
  23. else
  24. {
  25. printf( "Error (NO ABIERTO)\n" );
  26. return 1;
  27. }
  28. // Final pijada
  29.  
  30. cin.getline (*fichero, 256 , '\n'); //Con esto leo del datos.txt, hasta que se encuentra un salto de linea
  31.    fwrite( fichero, sizeof(unsigned int), 10, fichero2 );
  32.  
  33.   printf( "\nLeyendo los datos del fichero \"%s\":\n", nombre );
  34.   if( !fclose(fichero) )
  35.      printf( "\nFichero cerrado\n" );
  36.   else
  37.   {
  38.      printf( "\nError: fichero NO CERRADO\n" );
  39.      return 1;
  40.   }
  41. getchar();
  42. return 0;
  43.  
  44. }
  45.  
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,119 Ú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,114 Ú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