SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: saulillo en Jueves 6 de Septiembre de 2007, 19:58

Título: Salto De Linea
Publicado por: saulillo en Jueves 6 de Septiembre de 2007, 19:58
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
Título: Re: Salto De Linea
Publicado por: cheroky en Viernes 7 de Septiembre de 2007, 03:56
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.
Título: Re: Salto De Linea
Publicado por: saulillo en Sábado 8 de Septiembre de 2007, 10:56
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)
Título: Re: Salto De Linea
Publicado por: cheroky en Sábado 8 de Septiembre de 2007, 22:42
A grandes rasgos, good es un metodo de fstream, devuelve true mientras no ocurra un error de lectura del fichero.


S2.
Título: Re: Salto De Linea
Publicado por: Ithilien en Martes 11 de Septiembre de 2007, 15:23
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'
Título: Re: Salto De Linea
Publicado por: saulillo en Miércoles 12 de Septiembre de 2007, 19:28
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.
Título: Re: Salto De Linea
Publicado por: Kabern en Miércoles 19 de Diciembre de 2007, 00:08
Salto de linea en secuencia escape es '\f '. Asi de sencillo
Título: Re: Salto De Linea
Publicado por: Eternal Idol en Miércoles 19 de Diciembre de 2007, 00:31
Cita de: "Kabern"
Salto de linea en secuencia escape es '\f '. Asi de sencillo
No es correcto lo que decis:
Escape Sequences (http://msdn2.microsoft.com/en-us/library/h21280bw(VS.80).aspx)

Por favor no respondas en temas que ya estan resueltos meses despues.
Título: Re: Salto De Linea
Publicado por: Kabern en Viernes 4 de Enero de 2008, 00:32
Me disculpo con el foro. No volverá a suceder. Gracias