<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hola tengo una duda con los ficheros y las estructuras,si alguien me puede echar una mano</div><div>Resulta que es un proyecto final y no se si esta bien utilizar una estructura para guardar todos los datos introducidos en un fichero o habra que utilizar una estructura de tipo array struct ejemplo estructura[]..ya sabeis,mi profe me esta volviendo un poco loco y necesito vuestra ayuda,tengo este programa de pedidos telefonicos(como por ejemplo un telecomida china),la pregunta es: si guardo todo en una estructura y se escribe luego en el fichero,luego puedo utilizar la misma estructura o habra que hacer una estructura "array"</div><div>,si se hace con una estructura nada mas los datos de ella deberan ser escritos en una fila del fichero o da igual de la escritora de este porque a mi me la escribe a continuacion y no puede
 hacer la comparacion entre numeros si los busco...gracias un saludo</div><div> </div><div> </div><div> </div><div> </div><div> </div><div>/*Programa de pedidos telefonicos de comida rapida a domicilio</div><div>  -Almacenar numero de telefono<br>  -Almacenar la calle y el total de pedidos realizados junto con el precio <br>  -Sacar pedidos de un fichero con el numero correspondiente a cada cosa<br>  -Imprimir la cantidad de cada cosa pedida y el precio de esta<br>  -Imprimir la cantidad total del pedido<br>  -Modificar el pedido entero<br>  -Total de pedidos mostrando los numeros de telefono<br>  -Utilizar las ultimas cuatro cifras del telefono para modificar el pedido<br>  -Mostrar la hora en pantalla cuando se ha realizado el pedido<br>  -Marcar suplemento adicional(poder cambiar cosas del menu y aņadirle precio)<br>*/</div><div><br>#include <stdio.h><br>#include
 <conio.h><br>#include <stdlib.h><br>#include <ctype.h><br>#include <string.h></div><div><br>struct pedido introducir_datos(struct pedido telef);<br>int menu_programa(void);<br>int ver_menu(void);<br>void mostrar_pedidos(struct pedido telef);</div><div>struct pedido{<br>         char telefono[10];//numero de telefono del cliente<br>         char calle[40];//nombre de calle del cliente<br>         char portal[4];<br>         char piso[5];<br>         float pedidos;//valor pedido<br>         float total_pedidos;//valor total de los pedidos<br>       };</div><div><br>int main(void)<br>{<br>    struct pedido comanda, pedidos[50];<br>    int
 opcion,i=0;<br>    char tecla;<br>    FILE *fichero;<br>    <br>    do<br>    {<br>       opcion = menu_programa();<br>            <br>       switch(opcion)<br>       {<br>          case 1:do<br>                 {<br>                   comanda=introducir_datos(comanda);<br>                   printf("\nDesea introducir otro pedido?\n(S)i o (N)o:
 ");<br>                   tecla=tolower(getche());//convertir de mayusculas a minusculas<br>                  }while(tecla != 'n');<br>               break;<br>          case 2:<br>               break;<br>          case 3:<br>               break;<br>          case 4:ver_menu();<br>               break; <br>          case
 5:mostrar_pedidos(comanda);<br>               break;<br>          case 6:<br>               break;      <br>       }<br>    }while(opcion != 0);<br>    <br> return 0;<br>}</div><div><br>int menu_programa(void)<br>{//FUNCION QUE PERMITE MOSTRAR EL MENU PRINCIPAL DEL PROGRAMA<br>    int var;<br>    system("cls");<br>    <br>    printf("\n\tMENU PRINCIPAL");<br>    printf("\n\n1) Insertar telefono ");<br>    printf("\n2) Modificar pedido(ultimos 4 digitos telefonicos) ");<br>    printf("\n3) Ver total dinero sacado en el dia ");<br>    printf("\n4) Consultar precios
 productos y modificarlos ");<br>    printf("\n5) Mostrar total pedidos(numeros de telefonos)");<br>    printf("\n6) Borrar pedido por pedido");<br>    printf("\n0) Salir programa"); <br>    <br>    printf("\n\nTeclea opcion: ");<br>    scanf("%d",&var);<br>    fflush(stdin);<br>    <br> return var;<br>getchar();       <br>}</div><div>struct pedido introducir_datos(struct pedido telef)<br>{//FUNCION QUE PERMITE AŅADIR DATOS EN EL FICHERO DE LOS PEDIDOS<br>      struct pedido {<br>         char num_tel[50];<br>         char direccion[50];<br>         char portal2[50];<br>         char piso2[50];
 <br>        }lectura;<br>    <br>     FILE *fichero;<br>     int a,b,encontrado=0;//contador<br>     char t,p,po,c;<br>    <br>     for(b=0;b<50;b++)<br>     { <br>         lectura.direccion[b] = '\0';   <br>         lectura.piso2[b] = '\0';  <br>         lectura.portal2[b] = '\0';<br>         lectura.num_tel[b] = '\0'; <br>     }<br>          <br>     system("cls");<br>     fichero = fopen("C://c_files//proyecto//productos.txt","ab+");<br>     <br>    
 if(fichero==NULL)<br>     {<br>        printf("\nEl fichero esta vacio");<br>     }<br>     else<br>     {<br>        printf("\nMarque el numero de telefono: ");<br>        scanf("%s",&lectura.num_tel);<br>        fflush(stdin); <br>        <br>       <br>        fread(&telef.telefono,sizeof(telef.telefono),1,fichero);<br>        <br>        //empieza el fichero desde el principio<br>      /*  do<br>        {<br>           
 <br>           //  fread(&telef.telefono,strlen(telef.telefono),1,fichero);<br>             if(strcmp(telef.telefono,num_tel)==0)<br>             {<br>                 printf("\nSi");<br>                 encontrado=1;           <br>             }<br>        }while(feof(fichero) == 0);*/<br>        <br>       fseek(fichero,0L,0); <br>    /*   do<br>      
 {<br>         if(strcmp(telef.telefono,lectura.num_tel)==0)<br>         {<br>            encontrado=1;<br>         }<br>         fread(&telef.telefono,strlen(telef.telefono),1,fichero);<br>         fgets(telef.telefono,1,fichero);<br>         printf("\n%s",telef.telefono);<br>       }while(feof(fichero)==0);*/<br>       <br>       if(strcmp(telef.telefono,lectura.num_tel)!=0)<br>       //if(encontrado==0)<br>       {      <br>         
 printf("\nEscriba el nombre de la calle:");<br>          scanf("%s",&lectura.direccion);<br>          fflush(stdin);<br>          printf("\nPortal:");<br>          scanf("%s",&lectura.portal2);<br>          fflush(stdin);<br>          printf("\nPiso y letra:");<br>          scanf("%s",&lectura.piso2);<br>          fflush(stdin);<br>        <br>          strcpy(telef.telefono,lectura.num_tel);<br>         
 strcpy(telef.portal,lectura.portal2);<br>          strcpy(telef.piso,lectura.piso2);<br>          strcpy(telef.calle,lectura.direccion);<br>          fwrite(&telef.telefono,sizeof(telef.telefono),1,fichero);<br>          fwrite(&telef.calle,strlen(telef.calle),1,fichero);<br>          fwrite(&telef.portal,strlen(telef.portal),1,fichero);<br>          fwrite(&telef.piso,strlen(telef.piso),1,fichero);   <br>       }<br>       else<br>       {   <br>          fread(&telef.telefono,sizeof(telef.telefono),1,fichero);
 <br>          fread(&telef.calle,strlen(telef.calle),1,fichero);<br>          fread(&telef.portal,strlen(telef.portal),1,fichero);<br>          fread(&telef.piso,strlen(telef.piso),1,fichero);<br>       //   fgets(telef.calle,1,fichero);<br>        //  fgets(telef.portal,1,fichero);<br>        //  fgets(telef.piso,1,fichero);<br>          printf("\nTelefono: %s",telef.telefono);<br>          printf("\nCalle: %s",telef.calle);<br>          printf("\nPortal: %s",telef.portal);<br>          printf("\nPiso:
 %s",telef.piso);   <br>       }<br>     }<br>     <br>    <br> ///   }//fin operaciones con el fichero<br>     fclose(fichero);<br>     <br>     <br>getchar();     <br>}</div><div>//FUNCION PARA VER EL LISTADO DE LAS COMIDAS Y PRECIOS QUE HAY EN EL RESTAURANTE</div><div>int ver_menu(void)<br>{<br>     system("cls");<br>     FILE *fm;//fichero menu comidas<br>     char letra;<br>     <br>     fm = fopen("C://c_files//proyecto//comidas.txt","rb");<br>     <br>     if(fm==NULL)<br>     {<br>        printf("\nError de lectura de fichero menu");<br>    
 }<br>     else<br>     {<br>        letra = fgetc(fm); <br>         while(feof(fm)==0)<br>         {<br>            printf("%c",letra);<br>            letra = fgetc(fm);<br>         }<br>     }<br>     <br>     fclose(fm);<br>    <br> getchar();<br>return 0; <br>}</div><div>//FUNCION QUE MUESTRA TODOS LOS PEDIDOS QUE SE HAN REALIZADO<br>void mostrar_pedidos(struct pedido telef)<br>{<br>     FILE *fichero;<br>     char l;<br>     <br>     fichero =
 fopen("C://c_files//proyecto//productos.txt","rb");<br>     system("cls");<br>     <br>     if(fichero == NULL)<br>     {<br>         printf("\nEl fichero no tiene pedidos");<br>     }<br>     else<br>     {<br>        // fread(&telef,sizeof(telef),1,fichero);<br>         l=fgetc(fichero);<br>         while(feof(fichero)==0)<br>         {<br>            printf("%c",l);<br>            l=fgetc(fichero);<br>         }<br>     }<br>    
 fclose(fichero);<br>     <br>getchar();<br>}<br></div></div></body></html>