• Viernes 8 de Noviembre de 2024, 05:00

Autor Tema:  Salto De Linea  (Leído 2835 veces)

saulillo

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Salto De Linea
« en: Jueves 6 de Septiembre de 2007, 19:58 »
0
hola cracks de la programacion,

estoy intentando hacer un programa que cuente todos los caracteres de una linea en un archivo. El problema es q no se como expresar el salto de linea para que termine mi bucle, tengo lo siguiente:

Código: Text
  1.  
  2. char dato;
  3. int conta; //contar caracteres de la linea
  4. conta=2;//le asigno un valor para comprobar que lo graba bien al final.
  5.  
  6. //f1 y f2 son los ficheros.
  7.  
  8. if(!f1)
  9. cout << "Error abriendo el fichero" << endl;
  10. else
  11. {
  12. dato = f1.get();
  13. while(dato != '/n')
  14. {
  15. f2 << dato;
  16. dato = f1.get();
  17. }
  18. f2<<conta;
  19.  
  20. }
  21.  
  22.  

tb he probado poniendo en lugar del /n, eol y endl, y tampoco me salia.

Espero que me podais ayudar.

Gracias

cheroky

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Salto De Linea
« Respuesta #1 en: Viernes 7 de Septiembre de 2007, 03:56 »
0
Solo tienes que comprobar en el mismo bucle el valor devuelto por el metodo get y eventualmente comprobar el final de fichero por si este no estubiera formateado como el programa requiere, en otras palabras, que no incluya un salto de linea.
Una pequeña aproximacion:

Código: Text
  1. //..
  2. int main()
  3. {
  4.  
  5. std::ifstream f("f.dat");
  6. int i = 0;    
  7.       
  8.   for(i=0; f.good() && f.get() != '\n'; i++);
  9.   
  10.   std::cout << "Numero caracteres en la linea: " << i;  
  11.   
  12. return 0;    
  13. }
  14.  

S2.
Nunca me haria socio de un club donde admitieran a alguien como yo.

saulillo

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Salto De Linea
« Respuesta #2 en: Sábado 8 de Septiembre de 2007, 10:56 »
0
Gracias por responder.

creo q entiendo lo q dices, pero tengo 2 dudas:

1. que hace f.good() ??

2. en q libreria esta?? (es por si no la tengo incluida)

cheroky

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Salto De Linea
« Respuesta #3 en: Sábado 8 de Septiembre de 2007, 22:42 »
0
A grandes rasgos, good es un metodo de fstream, devuelve true mientras no ocurra un error de lectura del fichero.


S2.
Nunca me haria socio de un club donde admitieran a alguien como yo.

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Salto De Linea
« Respuesta #4 en: Martes 11 de Septiembre de 2007, 15:23 »
0
f.good te devolverá lo mismo que si haces fi.open y luego haces if ( fi ) ....

Por cierto, creo que no va bien el programa porque cuando se lee de fichero, no se tiene \n, sino que se tiene \0. Así deberás comprobar con  el caracter '\0'

saulillo

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Salto De Linea
« Respuesta #5 en: Miércoles 12 de Septiembre de 2007, 19:28 »
0
Buenas de nuevo, gracias a los dos, ya he conseguido q funcione.

de momento con el  '\n'  se lo come bien, con las ' incluidas.

Gracias d nuevo.

Kabern

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Salto De Linea
« Respuesta #6 en: Miércoles 19 de Diciembre de 2007, 00:08 »
0
Salto de linea en secuencia escape es '\f '. Asi de sencillo

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Salto De Linea
« Respuesta #7 en: Miércoles 19 de Diciembre de 2007, 00:31 »
0
Cita de: "Kabern"
Salto de linea en secuencia escape es '\f '. Asi de sencillo
No es correcto lo que decis:
Escape Sequences

Por favor no respondas en temas que ya estan resueltos meses despues.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kabern

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Salto De Linea
« Respuesta #8 en: Viernes 4 de Enero de 2008, 00:32 »
0
Me disculpo con el foro. No volverá a suceder. Gracias