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