• Viernes 8 de Noviembre de 2024, 16:00

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ituarte

Páginas: [1]
1
C/C++ / guardar en .txt
« en: Jueves 4 de Junio de 2009, 20:37 »
Hola tengo que hacer un programa que tiene 4 opciones
1-. introducir datos
2.- ver los datos introducidos
3.- guardar los datos del punto 1 en .txt
4.- salir

tengo casi todo hecho, el problema es que los datos que se guardan en .txt deberia guardarlos de forma ordenada(en forma de tabla) y ami se me ponen de forma desordenada
mi codigo es el siguiente
Código: C++
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #define TAM 30
  7.  
  8. void visualizar_variable ();
  9. int nueva_variable (struct variable nvariable [], int cantidad);
  10.  
  11. struct variable
  12. {
  13. char novela[TAM],ensayo[TAM],libro[TAM], nnovela[TAM],ntnovela[TAM];
  14. char nensayo[TAM],ntensayo[TAM],nlibro[TAM],ntlibro[TAM];
  15. };
  16.  
  17. main()
  18. {
  19.    char salir[5],aux;
  20.    struct variable nvariable [TAM];
  21.    int fin,opcion,cantidad=0,conta=0,contb=0;
  22.  
  23.    do{
  24.       printf("Elije una opcion:nn");
  25.       printf("1. Introducir datos (numero de titulos y numero de ejemplares por tema).n");
  26.       printf("2. Visualizar datos y numero total de libros disponibles en la libreria.n");
  27.       printf("3. Guardar los datos en un fichero de texto que se llamara libros.txtn");
  28.       printf("4. Salir.n");
  29.       printf("nSu opcion:n");
  30.       opcion=getche();
  31.       system("CLS");
  32.  
  33.       switch(opcion)
  34.       {
  35.          case'1':
  36.             conta++;
  37.             cantidad = nueva_variable (nvariable, cantidad);
  38.             break;
  39.          case'2':
  40.             if((conta!=0)&&(contb!=0))
  41.             {
  42.             visualizar_variable ();
  43.             }
  44.             else
  45.             {printf("No hay datos guardadosn");}
  46.             break;
  47.          case'3':
  48.          contb++;
  49.          printf("Datos Guardadosn");
  50.             FILE * fichero_ptr;
  51.             int i;
  52.             fichero_ptr = fopen("libros.txt","a+");
  53.             /* Colocamos el cursor al final del archivo para añadir un
  54.                nuevo registro */
  55.             fseek(fichero_ptr,0,SEEK_END);
  56.             for( i=0; i< cantidad; i++)
  57.                fwrite(&nvariable[i],sizeof(struct variable),1,fichero_ptr);
  58.             fclose(fichero_ptr);
  59.             break;
  60.          case'4':
  61.             return 0;
  62.             break;
  63.          default:
  64.             printf("Opcion incorrectan");
  65.       }
  66.       printf("nnDeseas continuar? ");
  67.       fflush(stdout);
  68.       scanf("%4s",salir);
  69.       if(strcmp(salir,"si")==0 || strcmp(salir,"SI")==0 || strcmp(salir,"Si")==0)
  70.       {
  71.          fin=1;
  72.          system("CLS");
  73.       }
  74.       else
  75.          fin=0;
  76.    }while(fin==1);
  77.    return 0;
  78. }
  79.  
  80. /*Esta funcion guarda las variables*/
  81. int nueva_variable(struct variable variable_ [], int cuantos)
  82. {
  83.    int donde = cuantos;
  84.    if (cuantos<TAM)
  85.    {
  86.       printf ("nIntroduce la palabra 'Novela': ");
  87.       /*Realizamos el “fflush (stdin)” para limpiar el buffer de entrada*/
  88.       fflush (stdin);
  89.       gets (variable_ [donde].novela);
  90.       printf ("Numero de titulos: ");
  91.       fflush (stdin);
  92.       scanf ("%s", & variable_ [donde].nnovela);
  93.       printf ("Numero total de ejemplares: ");
  94.       fflush (stdin);
  95.       scanf ("%s", & variable_ [donde].ntnovela);
  96.       printf ("nIntroduce la palabra 'Ensayo':");
  97.       fflush (stdin);
  98.       gets (variable_ [donde].ensayo);
  99.       printf ("Numero de titulos: ");
  100.       fflush (stdin);
  101.       scanf ("%s", & variable_ [donde].nensayo);
  102.       printf ("Numero total de ejemplares: ");
  103.       fflush (stdin);
  104.       scanf ("%s", & variable_ [donde].ntensayo);
  105.       printf ("nIntroduce la palabra 'Libro de texto':");
  106.       fflush (stdin);
  107.       gets (variable_ [donde].libro);
  108.       printf ("Numero de titulos: ");
  109.       fflush (stdin);
  110.       scanf ("%s", & variable_ [donde].nlibro);
  111.       printf ("Numero total de ejemplares: ");
  112.       fflush (stdin);
  113.       scanf ("%s", & variable_ [donde].ntlibro);
  114.       cuantos++;
  115.    }
  116.    else
  117.    {
  118.       printf ("No tengo más espacio");
  119.    }
  120.    return cuantos;
  121. }
  122.  
  123. /*Esta funcion visualiza todas las variable*/
  124. void visualizar_variable ()
  125. {
  126.    FILE*fichero_ptr;
  127.    char carac;
  128.    int contador;
  129.  
  130. /* Usamos una estructura auxiliar para recuperar registro por
  131.    registro del archivo */
  132.    struct aux
  133.    {
  134.    char novela[TAM],ensayo[TAM],libro[TAM], nnovela[TAM],ntnovela[TAM];
  135.    char nensayo[TAM],ntensayo[TAM],nlibro[TAM],ntlibro[TAM];
  136.    }auxiliar;
  137.  
  138.    if((fichero_ptr=fopen("libros.txt","a+t"))!=NULL)
  139.    {
  140.       fseek(fichero_ptr,0,SEEK_SET); //Colocamos el cursor al inicio del archivo
  141.       contador=1;
  142.  
  143.       while (fread(&auxiliar,sizeof(auxiliar),1,fichero_ptr))
  144.       {
  145.          printf("Registro: %dn-------------n",contador);
  146.          printf("%sn", auxiliar.novela);
  147.          printf("Numero de titulos: %sn", auxiliar.nnovela);
  148.          printf("Numero total de ejemplares: %sn", auxiliar.ntnovela);
  149.          printf("%sn", auxiliar.ensayo);
  150.          printf("Numero de titulos: %sn", auxiliar.nensayo);
  151.          printf("Numero total de ejemplares: %sn", auxiliar.ntensayo);
  152.          printf("%sn", auxiliar.libro);
  153.          printf("Numero de titulos: %sn", auxiliar.nlibro);
  154.          printf("Numero total de ejemplares: %snn", auxiliar.ntlibro);
  155.          contador++;
  156.       }
  157.       fclose(fichero_ptr);
  158.    }
  159.    else
  160.    {
  161.       printf("nNo hay datosn");
  162.    }
  163. }
  164.  
  165.  

Es la primera vez que utilizo estructuras y que tengo que guardar en .txt y estoy muy perdido, necesito que se me guarde en el archivo de la siguiente forma:

novela
Numero de titulos:
Numero total de ejemplares:
ensayo
"Numero de titulos
Numero total de ejemplares:
libros
Numero de titulos:
"Numero total de ejemplares:

muchas gracias

Páginas: [1]