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