• Domingo 15 de Diciembre de 2024, 00:40

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 - Christian_88

Páginas: [1]
1
C/C++ / Re: Fichero
« en: Sábado 16 de Junio de 2007, 18:37 »
Ideas?

Gracias por adelantado

2
C/C++ / Fichero
« en: Sábado 16 de Junio de 2007, 13:52 »
Hola! Tengo el siguiente programa (incompleto):

Código: Text
  1. /* Banco */
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string.h>
  6.  
  7. struct clientes
  8. {
  9.   int cod_cli_mae,telefon;
  10.    char nom_cli[35],dom_cli[35];
  11.    float sal_cli;
  12.  
  13. }
  14. reg1;
  15.  
  16. struct fingyfpag
  17. {
  18.   int cod_cli_mov,cod_suc,cod_prov;
  19.    float imp_ope,tip_oper;
  20. }
  21. reg2;
  22.  
  23. typedef struct
  24. {
  25.   int cod_prov;
  26.    char nom_prov[35];
  27. }
  28. reg3;
  29. reg3 tabla[5];
  30.  
  31. FILE *clientes,*fingyfpag;
  32.  
  33. void main()
  34. {
  35.    int i,mas,a;
  36.    strcpy(tabla[0].nom_prov,"Madrid");
  37.    strcpy(tabla[1].nom_prov,"Barcelona");
  38.    strcpy(tabla[2].nom_prov,"Toledo");
  39.    strcpy(tabla[3].nom_prov,"Avila");
  40.    strcpy(tabla[4].nom_prov,"Sevilla");
  41.   for (i=0;i<=4;i++)
  42.    {
  43.      tabla[i].cod_prov=i;
  44.    }
  45.  
  46.    clientes=fopen("clientes","r+b");
  47.    if(!clientes) clientes=fopen("clientes","w+b");
  48.    printf ("Desea introducir datos en el fichero clientes? 0->SI 1->NO: ");
  49.    scanf ("%d",&mas);
  50.    fflush(stdin);
  51.    printf ("\n");
  52.    while (mas!=1)
  53.    {
  54.     for (i=1000;i<=9999;i++)
  55.      {
  56.          fseek(clientes,i,SEEK_SET);
  57.          if (reg1.cod_cli_mae!=0)
  58.          {
  59.            reg1.cod_cli_mae=i;
  60.           printf ("Codigo del cliente: %d\n",reg1.cod_cli_mae);
  61.           printf ("Introduce el nombre del cliente: ");
  62.           gets (reg1.nom_cli);
  63.            fflush(stdin);
  64.           printf ("Introduce el domicilio del cliente: ");
  65.           gets (reg1.dom_cli);
  66.            fflush(stdin);
  67.           printf ("Introduce el telefono: ");
  68.           scanf ("%d",&reg1.telefon);
  69.            fflush(stdin);
  70.           printf ("Introduce el saldo actual del cliente: ");
  71.           scanf ("%f",&reg1.sal_cli);
  72.            fflush(stdin);
  73.            fseek(clientes,reg1.cod_cli_mae,SEEK_SET);
  74.            fwrite(&reg1,sizeof(reg1),1,clientes);
  75.            printf ("Desea seguir introduciendo datos? 0->SI 1->NO: ");
  76.          scanf ("%d",&mas);
  77.            fflush(stdin);
  78.            printf ("\n");
  79.            if (mas==1)
  80.            {
  81.              i=12000;
  82.            }
  83.          }
  84.      }
  85.    }
  86.  
  87.    printf ("Desea buscar algun cliente? 0->SI 1->NO: ");
  88.    scanf ("%d",&mas);
  89.    fflush(stdin);
  90.    printf ("\n");
  91.    while (mas!=1)
  92.    {
  93.       printf ("Introduce el codigo del cliente a buscar: ");
  94.       scanf ("%d",&a);
  95.       fflush(stdin);
  96.       fseek(clientes,a,SEEK_SET);
  97.       if(fread(&reg1,sizeof(reg1),1,clientes)==1)
  98.       {
  99.          printf ("Nombre: %s\n",reg1.nom_cli);
  100.          printf ("Domicilio: %s\n",reg1.dom_cli);
  101.          printf ("Telefono: %d\n",reg1.telefon);
  102.          printf ("Saldo actual: %2.f\n",reg1.sal_cli);
  103.          printf ("Desea buscar otro cliente? 0->SI 1->NO: ");
  104.        scanf ("%d",&mas);
  105.        printf ("\n");
  106.       }
  107.       else
  108.       {
  109.         printf ("El codigo de cliente introducido no esta dado de alta en el fichero clientes");
  110.       }
  111.    }
  112.    fclose (clientes);
  113. }
  114.  
  115.  
  116.  

Lo que ocurre es que cuando doy de alta un nuevo usuario, no quiero que me machaque uno que ya esté dado de alta. De la forma en que lo tengo, cuando meto un usuario, da igual que ya haya metido otro con codigo 1000, que me lo machaca.

Quiero poder ejecutar una vez el programa, introducir el usuario 1000 con todos sus datos, cerrarlo, abrir de nuevo el programa y que empiece por el 1001. He probado a poner un "if" con el reg1.cod_cli distinto de 0 pero nada... Parece ser como si no estuviesen a cero.

Páginas: [1]