elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 2,664 veces)
BJM

Desconectado Desconectado

Mensajes: 41


Ver Perfil
PROBLEMA EN TRANSFERIR DATOS DE UN FICHERO A UN ARRAY EN C.
« 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.


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


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

¡Buenas!

Tienes varios errores.

Código
  1. fscanf(pt,"%s",&nuevo);
  2.  

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
  1. for(i=0;!feof(pt);i++)
  2. {
  3.       fscanf(pt,"%s",&nuevo[i]);
  4.       fclose(pt);
  5. }
  6.  

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
  1. while(i!=feof(pt))
  2.  

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 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines