Título: PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C. Publicado por: BJM en 11 Enero 2012, 21:11 pm #include <stdio.h>
#include <iostream> using namespace std; char oracion[]="hola!"; char nuevo[100]; int i=0; FILE *pt; main(){ pt=fopen("mio.txt","w+");/*creo el fichero*/ fprintf(pt,"%s",oracion); fclose(pt); pt=fopen("mio.txt","r");/*transfiero los datos del array al fichero*/ for(i=0;!feof(pt);i++){ fscanf(pt,"%s",&nuevo); fclose(pt); } pt=fopen("mio.txt","r");/*transfiero datos del fichero a un nuevo array y aca esta el problema*/ while(i!=feof(pt)){ printf("/n cadena:%s",nuevo); i++; } fclose(pt); system("pause"); } nota:Soy nueva en el mundo de la programacion. Título: Re: PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C. Publicado por: do-while en 12 Enero 2012, 14:37 pm ˇBuenas!
Tienes varios errores. Código nuevo ya es un puntero al primer caracter de la cadena, entoncens estas pasando como parametro un puntero a un puntero. Te sobra el ampersand. Código
Aqui hay dos errores. Primero estas intentando leer una cadena en un char (nuevo(i) es un caracter) y, segundo, estas cerrando el fichero despues de cada lectura. O bien lees una unica vez la cadena, o bien lees los distintos caracteres, utilizando para esto ultimo el especificador de formato %c. Otro problema esta en la condicion del while. Si miras el prototipo de la funcion feof: http://www.cplusplus.com/reference/clibrary/cstdio/feof/ veras que devuelve cero si no se ha llegado al final, y distinto de cero si se ha alcanzado el final. Código Lo que tu estas haciendo es comparar i con el valor devuelto por feof, y como no sabemos que valor devolvera feof, puede que nunca sea igual al de i, y entraras en un bucle infinito. Comprueba siempre si se ha alcanzado el final del fichero mirando si el valor devuelto por feof es distinto de cero. ˇSaludos! PD: Para cualquier duda sobre funciones consulta siempre en internet. Te recomiendo: http://www.cplusplus.com Y antes de empezar con ficheros estudia entradas y salidas por teclado y monitor. scanf y printf para empezar. |