Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: feedf en 25 Julio 2013, 16:51 pm



Título: consulta , sobre ficheros
Publicado por: feedf en 25 Julio 2013, 16:51 pm
buenas tardes gente, tengo ganas de aprender sobre ficheros,
lo que quiero hacer es un pequeño codigo el cual pueda ingresar datos, cerrarlo, y otro dia por ejemplo volver a abrirlo y poder ver esos datos y poder sumarle datos nuevos

me pueden dar una punta por donde empezar a leer? esto es con ficheros es correcto no?

muchas gracias


Título: Re: consulta , sobre ficheros
Publicado por: eferion en 25 Julio 2013, 16:55 pm
correcto, es con ficheros.

Si lo vas a hacer en c... deberías mirarte fopen, fwrite, fseek, ...

Si lo vas a hacer en c++ tienes que mirarte las clases ofstream, ifstream y stream para acceder y manipular ficheros.

Aunque lo ideal es que empieces con tutoriales sobre el tema... que los hay a patadas en internet.


Título: Re: consulta , sobre ficheros
Publicado por: Stakewinner00 en 25 Julio 2013, 17:54 pm
Aqui tienes info acerca de fstream:http://www.cplusplus.com/reference/fstream/fstream/ (http://www.cplusplus.com/reference/fstream/fstream/)
Te dejo un ejemplo de escribir hola en un fichero, no lo he probado pero en teoría funciona.
Esto lo puedes modificar y substituir la string por variables y para por ejemplo pedir al usuario que ingrese un dato y que se guarde en el fichero.
Código
  1. #include <fstream>
  2.  
  3. int main()
  4. {
  5. std::ofstream archivo;
  6. archivo.open("archivo.txt", std::ios::ate); //std::ios::ate hace que escriba en el final del fichero sin sobreescribir.
  7. archivo << "hola, este es un mensaje de prueba";
  8. archivo.close();
  9. return 0;
  10. }

Otro ejemplo para leer un fichero. También se podría usar un bucle pero de esta forma es más sencillo.
Código
  1. #include <string>
  2. #include <fstream>
  3.  
  4. int main()
  5. {
  6. std::string texto;
  7. std::ifstream archivo;
  8. archivo.open("archivo.txt");
  9. archivo >> texto;
  10. //Luego aquí podrías usar cout para imprimir el texto, etc.
  11. archivo.close();
  12. }


Título: Re: consulta , sobre ficheros
Publicado por: feedf en 25 Julio 2013, 18:57 pm
muchas gracias por las respuestas, les hago otra pregunta a ver si se puede hacer

ejemplo

cargo un valor 100 a una variable, y la guardo en un fichero,
luego cargo otra variable con 200 por ejemplo, (esta se guarda en el mismo fichero o en otro?)
cierro el programa-

lo abro otra vez y quiero sumarle 150 a mi primer variable , y que lo guarde en ese fichero y lo mismo con la otra variable
y asi ir acumulando datos y qe se vallan guardando en ficheros para luego tener una especie de valance

es muy dificil para arrancar con ficheros? gracias !!


Título: Re: consulta , sobre ficheros
Publicado por: Stakewinner00 en 25 Julio 2013, 19:16 pm
Difícil no es, simplemente has de pensar como hacerlo. Tratar con ficheros tampoco es difícil solo has de practicar un poco.
La forma más rápida de hacer lo que dices es colocando una variable por linea en un mismo fichero y luego leerlas como en el segundo ejemplo que te deje pero cambiar lo de string por int short o lo que te interese hacer.

PD:Programas en C o C++ por que no se mucho de C.


Título: Re: consulta , sobre ficheros
Publicado por: MeCraniDOS en 28 Julio 2013, 13:45 pm
Es un código que hice que quizás te puede ayudar  :silbar:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5.  
  6. int main(void)
  7. {
  8.  
  9.    FILE *fichero;
  10.    char Filename[256];
  11.    char caracterread;
  12.    char characterwirte[512];
  13.    char Salir;
  14.  
  15.    printf("Introduzca el nombre del fichero que desea crear: ");
  16.    fgets(Filename, 256, stdin);
  17.  
  18.    fichero = fopen(Filename, "wt");
  19.  
  20.    printf("\n==Editor==\n\n");
  21.  
  22.    do
  23.    {
  24.               printf("");
  25.               gets(characterwirte);
  26.               strcat(characterwirte, "\n");
  27.               fwrite(&characterwirte, strlen(characterwirte), 1, fichero);
  28.               printf("\nDesea seguir escribiendo? (s/n)");
  29.               Salir=getchar();
  30.               fflush(stdin);
  31.    }
  32.    while((Salir=='S') || (Salir=='s'));  
  33.  
  34.    fclose(fichero);
  35.  
  36.    fflush(stdin);
  37.    printf("Desea revisar el documento? (s/n)");
  38.    Salir=getchar();
  39.  
  40.    if((Salir=='S') || (Salir=='s'))
  41.  
  42.    fichero = fopen(Filename, "rt");
  43.  
  44.    {
  45.  
  46.    if (fichero == NULL)
  47.    {
  48.       printf("\nError: No se ha podido abrir el archivo.");
  49.    }
  50.  
  51.    else
  52.    {
  53.        caracterread = fgetc(fichero);
  54.  
  55.        while(feof(fichero)==0)
  56.        {
  57.                   printf("%c", caracterread);
  58.                   caracterread = fgetc(fichero);
  59.        }
  60.        fclose(fichero);    
  61.    }
  62.  
  63.    }
  64.  
  65.    fflush(stdin);
  66.    printf("\n\nPresione Intro para finalizar...");
  67.    getchar();
  68.  
  69.  
  70. }

Al principio falta añadir una comprobación al crear el archivo, pero bueno, quizás puedes coger alguna parte del código

Saludos