<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Bueno todo funciona bien como coentaba antes pero encuentro un error. Con getline lo hace todo correctamente y funciona perfectamente.<div>Pero si lo hago con read me imprime más caracteres que los que hay en el fichero que es lo que no entiendo. Porque se supone que cuando termina el fichero ya no debería imprimir más.</div><div>adjunto el fichero de lectura y el código anterior modificado para funcionar con read(char, length)</div><div><br></div><div>Mensaje obtenido:</div><div><div>La escritura se esta haciendo realmente bien.</div><div> A ver si va todo bien y puedo echar una partidilla al God of War.Hola</div><div>Hola</div><div>Hola</div><div>Hola</div><div>Hola minuto.</div><div>.</div><div><br></div><div><br></div><div>La ultima linea con el punto no debería salir. Esta otra versión me gustaría usarla para detectar unas cadenas de caracteres características en ficheros más largos.</div><div><br></div><div>Un saludo.</div><div><br></div><div><div>On 06/05/2010, at 13:07, Steven Davidson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hola Jorge,<br><br> <div class="gmail_quote">2010/5/6 Jorge Vega Sanchez <span dir="ltr"><<a href="mailto:memmaker650@gmail.com">memmaker650@gmail.com</a>></span><br> <blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">A ver si lo explico bien. Tengo un par de programitas de prueba, en uno escribo texto en un fichero con saltos de linea. Todo funciona perfectamente.<br> Ahora en el programa que debe leer el fichero y mostrarlo por pantalla no consigo que se representen los espacios y los saltos de linea.<br><br>Esto es lo que tengo, a ver si me podeis ayudar porque ando que ya no sé que probar.<br> </blockquote> <div> </div> <div> </div> <div>Veamos el código fuente.</div> <div> </div> <div> </div> <blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">#include <iostream><br>#include <fstream><br>//#include <stdio.h><br><br>using namespace std;<br> <br>int main(int argc, char *argv[])<br>{<br>  /* Declaramos un array con suficiente tamaño para leer las líneas */<br>       char cadena[100];<br>  /* Fichero original, se abre para lectura pasando parámetros en la declaración de la variable */<br>   ifstream f;<br>  f.open("fichero2.txt", ifstream::in);<br><br>  /* Comprobar que se abierto correctamente */<br>  if (!f)<br>  {<br>               cout << "fallo" << endl;<br>               return -1;<br>        }<br>       /* Hacemos una primera lectura */<br>       while (!f.eof())<br>       {<br>               /* Leemos la siguiente línea */<br>               f >> cadena;<br></blockquote> <div> </div> <div> </div> <div>Aquí está el problema. Estás leyendo la información con formato. La operación de extracción >> saltará los espacios blancos: ' ', '\t', '\n', '\r', '\f', y '\v'. Si quieres leer la información exactamente en el fichero, entonces usa 'read()'. Sin embargo, en tu caso, puedes usar 'getline()' sin muchos problemas. Por ejemplo,</div> <div> </div> <div>cin.getline( cadena, 100 );</div> <div> </div> <div> </div> <blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">               if(cadena=='\n')<br></blockquote> <div> </div> <div> </div> <div>Esto es incorrecto. No puedes comparar una cadena con un carácter. Lo que realmente estás haciendo es comparar la dirección de memoria del primer carácter de la cadena con el código ASCII del carácter '\n'.</div> <div> </div> <div>De todas maneras, esta comparación ya no es necesaria.</div> <div> </div> <blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">               {<br>                       cout << endl;<br>               }<br>               else<br>                {<br>                       cout << cadena;<br>               }<br>       }<br>       cout << endl;<br>       f.close();<br>       return 0;<br>}<br><br></blockquote> <div> </div> <div>Espero haber aclarado las dudas.</div> <div> </div> <div>Steven</div> <div> </div></div> _______________________________________________<br>Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br><a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a></blockquote></div><br></div></body></html>