Título: lectura y escritura de ficheros Publicado por: franfis en 14 Abril 2013, 16:04 pm Hola, mi problema es que el segundo for imprime solo espacios en blanco como si en el fichero Letras.txt hubiese solo espacios en blanco, este es el código;
Citar #include <iostream.h> #include <fstream.h> int main() { int c=0; int j=0; int i; char letra; fstream letras("Letras.txt", ios::in|ios::out); for (i=0;i<=2000;i++){ letras.seekg(i, ios::beg); letra=letras.get(); if(letra=='\"'){ c=c+1; cout<<"comilla:"<<c<<" "<<"posicion :"<<i<<endl; } } for (i=52;i<=100;i++){ letras.seekg(i, ios::beg); letra=letras.get(); letras.seekp(0, ios::end); cout<<letra; } while(!letras.eof()) letras.close(); return 0; } El primer for, si funciona señalando la posición de las comillas en el fichero Letras.txt mostrandolos en pantalla. En el segundo for estoy tratando de imprimir en pantalla las letras desde la posición 52 hasta 100 pero lo unico que aparece en pantalla son espacios. Aqui esta el resultado de correr todo. Citar comilla:1 posicion :21 \___resultado del 2do for______/comilla:2 posicion :44 comilla:3 posicion :51 comilla:4 posicion :127 comilla:5 posicion :144 comilla:6 posicion :156 comilla:7 posicion :163 comilla:8 posicion :228 comilla:9 posicion :245 comilla:10 posicion :259 comilla:11 posicion :266 comilla:12 posicion :333 comilla:13 posicion :350 comilla:14 posicion :376 comilla:15 posicion :383 comilla:16 posicion :462 Press any key to continue imprimió solo espacios en blanco :o cuando pruebo ambos for's por separado si funcionan, pero juntos no. Graciasss Título: Re: lectura y escritura de ficheros Publicado por: franfis en 15 Abril 2013, 18:02 pm Si no lo explique bien por favor pregunten >:(
Título: Re: lectura y escritura de ficheros Publicado por: Puntoinfinito en 15 Abril 2013, 18:37 pm Supongo que por posiciones las entiendes como caracteres, letras.
Yo te recomiendo el siguiente uso: Código
Que vaya leyendo linea por linea. Y luego tu ya le puedes a partir de cuando o cuales caracteres debe imprimir-guardar. Título: Re: lectura y escritura de ficheros Publicado por: franfis en 15 Abril 2013, 19:47 pm Gracias, pero el archivo que intento leer es del tipo;
xxxxxxxxxxxxxxxxxx"xccvcx"xxxxxxx"nombre1"x xxxx"dhfdhj"xxxx"nombre2"xxxxxxxxxxxxxxxxxxx xxxxxxxxxxx"sdfsgtj"xx"nombre3"xxxxxxxxxxxxxx xx"swew"xx"nombre4"xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx"sretwt"xx"nombre4"x etc... Lo que intento leer es; nombre1, nombre2, nombre3, nombre4, nombre5. Es por eso que primero leo la posición de las comillas y luego lo que hay entre ellos, por ejemplo leer entre las comillas 3 y 4 leer entre las comillas 7 y 8 leer entre las comillas 11 y 12 leer entre las comillas 15 y 16 etc,etc.. por eso ¿como haria? para leer por ejemplo nombre4 teniendo como datos las posiciones de las comillas entre las que se encuentra. Título: Re: lectura y escritura de ficheros Publicado por: franfis en 17 Abril 2013, 15:09 pm La solución era poner ;
letras.close(); fstream letras2("Letras.txt", ios::in|ios::out); después del primer for ;D Título: Re: lectura y escritura de ficheros Publicado por: rir3760 en 20 Abril 2013, 17:13 pm La solución era poner ; El problema con el fragmento que publicas es tratar de leer 2001 caracteres sin importar cuantos realmente hay en el archivo. Si contiene menos la función get eventualmente falla activando la bandera de fin de archivo y eso causa que, a partir de ese punto, todas las llamadas a seekg fallen.letras.close(); fstream letras2("Letras.txt", ios::in|ios::out); después del primer for ;D Por eso el segundo bucle no funciona correctamente. Para solucionarlo se debe desactivar esa bandera. Una forma algo extrema es mediante la operación que mencionas: cerrar el archivo y abrirlo de nuevo. Un saludo Título: Re: lectura y escritura de ficheros Publicado por: cypascal en 20 Abril 2013, 19:16 pm No se si es exactamente esto lo que quieres. El código que te dejo aquí guarda los fragmentos entrecomillados de un fichero, en un fichero de texto de salida. He hecho la prueba con el fragmento que dejaste y parece que funciona.
Te lo dejo en este blog: http://cypascal.blogspot.com.es/2013/04/lectura-palabras-entrecomilladas-en-cc.html (http://cypascal.blogspot.com.es/2013/04/lectura-palabras-entrecomilladas-en-cc.html) Y aquí también: Código: #include <stdio.h> Salu10 Edito: No me di cuenta que lo tenías en C++, sorry... |