elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:56  


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.  (Leído 381 veces)
Mari2012

Desconectado Desconectado

Mensajes: 1


Ver Perfil
PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.
« en: 11 Enero 2012, 21:11 »

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


En línea
do-while


Desconectado Desconectado

Mensajes: 604


Cuando me afeito, recuerdo porque me dejo barba.


Ver Perfil
Re: PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.
« Respuesta #1 en: 12 Enero 2012, 14:37 »

¡Buenas!

Tienes varios errores.

Código
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.

Código
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.

Código
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.


« Última modificación: 12 Enero 2012, 15:16 por do-while » En línea

¡¡¡Feliz año nuevo!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines