PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.

Iniciado por BJM, 11 Enero 2012, 21:11 PM

0 Miembros y 1 Visitante están viendo este tema.

BJM

#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.

do-while

#1
¡Buenas!

Tienes varios errores.


fscanf(pt,"%s",&nuevo);


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.


for(i=0;!feof(pt);i++)
{
      fscanf(pt,"%s",&nuevo[i]);
      fclose(pt);
}


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.


while(i!=feof(pt))


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.
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!