Foros del Web » Programación para mayores de 30 ;) » C/C++ »

para que sirve la Funcion frewind

Estas en el tema de para que sirve la Funcion frewind en el foro de C/C++ en Foros del Web. Saludos otra vez: alguien podria decirme para que se utiliza esta funcion en c?? necesito borrar un registro de un fichero pero no encuentro ninguna ...
  #1 (permalink)  
Antiguo 21/04/2011, 21:16
 
Fecha de Ingreso: abril-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
para que sirve la Funcion frewind

Saludos otra vez: alguien podria decirme para que se utiliza esta funcion en c??

necesito borrar un registro de un fichero pero no encuentro ninguna funcion, y lo unico que se parece a lo que necesito es esa funcion. alguien podria decirme como elimino o modifico registros??

hasta ahora esto es lo que tengo, pero debo hacer una funcion que me permita borrar productos

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <iostream.h>
  5. #include <ctype.h>
  6.  
  7. //ESTRUCTURA
  8. struct Aceitera
  9. {
  10.  int CodigoProducto;
  11.  char Descripcion[30];
  12.  int Unidades;
  13.  float Precio;
  14. };
  15. struct Aceitera ProducAceitera;
  16.  
  17. //ARCHIVO
  18. FILE *ArchiAceite;
  19.  
  20. //DECLARACION DE FUNCIONES
  21. void IngresoProductos(void);
  22. void ConsultaDeProductos(void);
  23. void Venta_ModificacionDelProducto(void);
  24. void EliminarRegistro(void);
  25. void EliminarArchivoCompleto(void);
  26. void ListadoDeProductos(void);
  27.  
  28. main()
  29.   {
  30.     int op;
  31.  
  32.     clrscr();
  33.     cout<<"\n\t\t       Universidad Mariano Galvez";
  34.     cout<<"\n\t\t    Programacion I. Ing Mario de Paz";
  35.     cout<<"\n\t\t\t     Grupo No. 3";
  36.     cout<<"\n\n\n\t\t\t\     >>>ACEITERA<<<";
  37.     cout<<"\n\n\n\n\ Seleccione una Opcion:\n";
  38.     cout<<"\n\r 1. Ingreso de Producto";
  39.     cout<<"\n\r 2. Consulta de Producto";
  40.     cout<<"\n\r 3. Venta_Modificacion de Producto";
  41.     cout<<"\n\r 4. Eliminar un Producto";
  42.     cout<<"\n\r 5. Eliminar Archivo";
  43.     cout<<"\n\r 6. Listado de Productos\n\n ";
  44.     cin>>op;
  45.     switch(op)
  46.     {
  47.     case 1: IngresoProductos(); break;
  48.     case 2: ConsultaDeProductos(); break;
  49.     case 3: Venta_ModificacionDelProducto();break;
  50.     case 4: EliminarRegistro(); break;
  51.     case 5: EliminarArchivoCompleto(); break;
  52.     case 6: ListadoDeProductos(); break;
  53.     default: cout<<"\a\n Opcion no valida!";
  54.     cout<<"\n Presiona una tecla para salir";getch(); break;
  55.     }
  56.   }
  57.  
  58.  
  59. //FUNCION INGRESO
  60. void IngresoProductos(void)
  61. {
  62.  int CodigoProducto;
  63.  clrscr();
  64.  cout<<"\n\n\r INGRESE LOS CAMPOS DEL PRODUCTO";
  65.  //Abrir Nuestro_Archivo en solo-lectura
  66.  ArchiAceite=fopen("PRODUCTOS.SEC","rb+");
  67.  //En caso de que no exista lo crearemos
  68.  if(ArchiAceite==NULL)
  69.     ArchiAceite=fopen("PRODUCTOS.SEC","wb");
  70.  cout<<"\n\n\n\r Ingrese el Codigo del Producto: ";
  71.  cin>>CodigoProducto;
  72.  //Leer el "Registro_Vehiculo" de tamaño=sizeof(Registro_Vehiculo)
  73.  //Del archivo: Nuestro_Archivo
  74.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  75.  //Mientras no se encuentre el final del archivo
  76.  while(!feof(ArchiAceite))
  77.       {
  78.       if(ProducAceitera.CodigoProducto==CodigoProducto)
  79.         {
  80.         cout<<"\n\n\n\r ---Registro duplicado--- Este Id ya existe!!!";
  81.         fclose(ArchiAceite);
  82.         getch();
  83.         return;
  84.         }
  85.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  86.       }
  87.  cout<<"\n\r Descripcion del Producto: "; gets(ProducAceitera.Descripcion);
  88.  cout<<"\n\r Cantidad de unidades disponibles: ";
  89.  cin>>ProducAceitera.Unidades;
  90.  cout<<"\n\r Precio: ";
  91.  cin>>ProducAceitera.Precio;
  92.  
  93.  
  94.  ProducAceitera.CodigoProducto=CodigoProducto;
  95.  
  96.  //Guardar el registro completo
  97.  fwrite(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  98.  //Cerrar archivo
  99.  fclose(ArchiAceite);
  100.  
  101.  cout<<"\n\n\n\ Producto Registrado!!";
  102.  cout<<"\n\ Presione una tecla para contunuar...";
  103.  getch();
  104.  return;
  105. }
  106.  
  107.  
  108. //FUNCION CONSULTA
  109. void ConsultaDeProductos(void)
  110. {
  111.  int cod;
  112.  clrscr();
  113.  cout<<"\n\ CONSULTA DE PRODUCTOS PARA LA VENTA";
  114.  //Abrir Archivo en solo-lectura
  115.  ArchiAceite=fopen("PRODUCTOS.SEC","rb");
  116.  if(ArchiAceite==NULL)
  117.    {
  118.    cout<<"\a\n\n\ No hay Ningun archivo Guardado";
  119.    cout<<"\n\ Presione una tecla para continuar...";
  120.    getch();
  121.    return;
  122.    }
  123.  cout<<"\n\n\n\ Cual es el codigo del producto?: ";
  124.  cin>>cod;
  125.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  126.  while(!feof(ArchiAceite))
  127.       {
  128.       cout<<"\n\ Codigos Archivados: ";
  129.       cout<<ProducAceitera.CodigoProducto;
  130.       cout<<"\n\ Codigo Ingresado: ";
  131.       cout<<cod;
  132.       if(ProducAceitera.CodigoProducto==cod)
  133.         {
  134.         cout<<"\n\n\n------------------------------------------------------";
  135.         cout<<"\nCodigo\tDescripcion\t\tUnidades\tPrecio";
  136.         cout<<"\n\------------------------------------------------------\n";
  137.         cout<<ProducAceitera.CodigoProducto;
  138.         cout<<"\t"<<ProducAceitera.Descripcion;
  139.         cout<<"\t\t"<<ProducAceitera.Unidades;
  140.         cout<<"\t\t"<<ProducAceitera.Precio<<"\n";
  141.  
  142.         fclose(ArchiAceite);
  143.         cout<<"\n\n\n Oprima una tecla para continuar...";
  144.         getch();
  145.         return;
  146.         }
  147.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  148.       }
  149.  cout<<"\n\r No se encuentra el Registro!!!";
  150.  fclose(ArchiAceite);
  151.  cout<<"\n\r Oprima cualquier tecla para continuar...";
  152.  getch();
  153.  return;
  154. }
  155.  
  156.  
  157. //FUNCION VENTA-MODIFICACION DEL PRODUCTO
  158. void Venta_ModificacionDelProducto(void)
  159. {
  160.  
  161. }
  162.  
  163.  
  164. //FUNCION ELIMINAR UN REGISTRO
  165. void EliminarRegistro(void)
  166. {
  167.  
  168. }
  169.  
  170. //FUNCION ELIMINAR ARCHIVO COMPLETO
  171. void EliminarArchivoCompleto(void)
  172. {
  173.  char opcion;
  174.  clrscr();
  175.  cout<<"\n\n ELIMINACION DE ARCHIVO COMPLETO";
  176.  cout<<"\n\n Desea eliminar el archivo Completo? S/N ";
  177.  cin>>opcion;
  178.    if(opcion=='S')
  179.    {
  180.    if(remove("PRODUCTOS.SEC")!=0)
  181.       cout<<"\a\n\n No har Archivo para eliminar";
  182.    else
  183.       cout<<"\n\n Archivo Eliminado";
  184.    cout<<"\n Pulse una tecla para continuar...";
  185.    getch();
  186.    }
  187.  
  188.  return;
  189. }
  190.  
  191.  
  192. //FUNCION DE LISTADO
  193. void ListadoDeProductos(void)
  194. {
  195.  clrscr();
  196.  
  197.  cout<<"\n\LISTADO DE REGISTROS DE PORDUCTO";
  198.  ArchiAceite=fopen("PRODUCTOS.SEC","rb");
  199.  if(ArchiAceite==NULL)
  200.    {
  201.    cout<<"\a\n\n\ No hay Ningun archivo Guardado";
  202.    cout<<"\n\ Oprima cualquier tecla para contuniuar...";
  203.    getch();
  204.    return;
  205.    }
  206.  cout<<"\n\n\n------------------------------------------------------";
  207.  cout<<"\nCodigo\tDescripcion\t\tUnidades\tPrecio";
  208.  cout<<"\n\------------------------------------------------------\n";
  209.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  210.  while(!feof(ArchiAceite))
  211.       {
  212.       cout<<ProducAceitera.CodigoProducto;
  213.       cout<<"\t"<<ProducAceitera.Descripcion;
  214.       cout<<"\t\t"<<ProducAceitera.Unidades;
  215.       cout<<"\t\t"<<ProducAceitera.Precio<<"\n";
  216.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  217.       }
  218.  fclose(ArchiAceite);
  219.  cout<<"\n\------------------------------------------------------";
  220.  cout<<"\n\nFin del listado";
  221.  cout<<"\n\nOprima ENTER para continuar...";
  222.  getch();
  223.  return;
  224. }
  #2 (permalink)  
Antiguo 22/04/2011, 14:48
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: para que sirve la Funcion frewind

hola pues mira la funcion frewind regresa el puntero de archivo a su posicion 0, osea que cuando tu abres un archivo el puntero del archivo apunta a la posicion 0 del mismo, ahi podrias tener por ejemplo "hola" en un archivo.txt y el primer apuntador estaria en "h", entonces cuando haces lecturas a ese archivo por medio de fscanf o mas util por medio de fread (que lee estructuras ) pues el apuntador de archivo se avanza automaticamente despues de cada lectura, entonces cuando quieras volver a leer desde la posicion 0 tendiras que hacer un frewind para poder hacerlo o no podras leer desde 0
  #3 (permalink)  
Antiguo 22/04/2011, 14:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: para que sirve la Funcion frewind

ahora que si lo que quieres es borrar una estructura dentro del archivo que ya tienes, pues en tu programa tendrias que tener cuando inicia un arreglo de estructuras para que lea todas antes que nada, entonces si borras alguna desde el rpograma que se borre el arreglo de estructura que la contiene dentro del arreglo de estructuras y despues cuando la borraste de tu arreglo pues abres el archivo de estructuras con "w+" para que se borre lo que tenia y escribas lo que acutalmente tienes ( sin la estructura que se borro oviamente ) esa es una buena opcion, tambien pues para los arreglos de estructuras usa listas enlazadas para que sea mas eficiente tu programa, como ves???? si me entendiste???
  #4 (permalink)  
Antiguo 22/04/2011, 14:53
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: para que sirve la Funcion frewind

Cita:
Iniciado por PrimerGT Ver Mensaje
Saludos otra vez: alguien podria decirme para que se utiliza esta funcion en c??

necesito borrar un registro de un fichero pero no encuentro ninguna funcion, y lo unico que se parece a lo que necesito es esa funcion. alguien podria decirme como elimino o modifico registros??

hasta ahora esto es lo que tengo, pero debo hacer una funcion que me permita borrar productos

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <iostream.h>
  5. #include <ctype.h>
  6.  
  7. //ESTRUCTURA
  8. struct Aceitera
  9. {
  10.  int CodigoProducto;
  11.  char Descripcion[30];
  12.  int Unidades;
  13.  float Precio;
  14. };
  15. struct Aceitera ProducAceitera;
  16.  
  17. //ARCHIVO
  18. FILE *ArchiAceite;
  19.  
  20. //DECLARACION DE FUNCIONES
  21. void IngresoProductos(void);
  22. void ConsultaDeProductos(void);
  23. void Venta_ModificacionDelProducto(void);
  24. void EliminarRegistro(void);
  25. void EliminarArchivoCompleto(void);
  26. void ListadoDeProductos(void);
  27.  
  28. main()
  29.   {
  30.     int op;
  31.  
  32.     clrscr();
  33.     cout<<"\n\t\t       Universidad Mariano Galvez";
  34.     cout<<"\n\t\t    Programacion I. Ing Mario de Paz";
  35.     cout<<"\n\t\t\t     Grupo No. 3";
  36.     cout<<"\n\n\n\t\t\t\     >>>ACEITERA<<<";
  37.     cout<<"\n\n\n\n\ Seleccione una Opcion:\n";
  38.     cout<<"\n\r 1. Ingreso de Producto";
  39.     cout<<"\n\r 2. Consulta de Producto";
  40.     cout<<"\n\r 3. Venta_Modificacion de Producto";
  41.     cout<<"\n\r 4. Eliminar un Producto";
  42.     cout<<"\n\r 5. Eliminar Archivo";
  43.     cout<<"\n\r 6. Listado de Productos\n\n ";
  44.     cin>>op;
  45.     switch(op)
  46.     {
  47.     case 1: IngresoProductos(); break;
  48.     case 2: ConsultaDeProductos(); break;
  49.     case 3: Venta_ModificacionDelProducto();break;
  50.     case 4: EliminarRegistro(); break;
  51.     case 5: EliminarArchivoCompleto(); break;
  52.     case 6: ListadoDeProductos(); break;
  53.     default: cout<<"\a\n Opcion no valida!";
  54.     cout<<"\n Presiona una tecla para salir";getch(); break;
  55.     }
  56.   }
  57.  
  58.  
  59. //FUNCION INGRESO
  60. void IngresoProductos(void)
  61. {
  62.  int CodigoProducto;
  63.  clrscr();
  64.  cout<<"\n\n\r INGRESE LOS CAMPOS DEL PRODUCTO";
  65.  //Abrir Nuestro_Archivo en solo-lectura
  66.  ArchiAceite=fopen("PRODUCTOS.SEC","rb+");
  67.  //En caso de que no exista lo crearemos
  68.  if(ArchiAceite==NULL)
  69.     ArchiAceite=fopen("PRODUCTOS.SEC","wb");
  70.  cout<<"\n\n\n\r Ingrese el Codigo del Producto: ";
  71.  cin>>CodigoProducto;
  72.  //Leer el "Registro_Vehiculo" de tamaño=sizeof(Registro_Vehiculo)
  73.  //Del archivo: Nuestro_Archivo
  74.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  75.  //Mientras no se encuentre el final del archivo
  76.  while(!feof(ArchiAceite))
  77.       {
  78.       if(ProducAceitera.CodigoProducto==CodigoProducto)
  79.         {
  80.         cout<<"\n\n\n\r ---Registro duplicado--- Este Id ya existe!!!";
  81.         fclose(ArchiAceite);
  82.         getch();
  83.         return;
  84.         }
  85.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  86.       }
  87.  cout<<"\n\r Descripcion del Producto: "; gets(ProducAceitera.Descripcion);
  88.  cout<<"\n\r Cantidad de unidades disponibles: ";
  89.  cin>>ProducAceitera.Unidades;
  90.  cout<<"\n\r Precio: ";
  91.  cin>>ProducAceitera.Precio;
  92.  
  93.  
  94.  ProducAceitera.CodigoProducto=CodigoProducto;
  95.  
  96.  //Guardar el registro completo
  97.  fwrite(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  98.  //Cerrar archivo
  99.  fclose(ArchiAceite);
  100.  
  101.  cout<<"\n\n\n\ Producto Registrado!!";
  102.  cout<<"\n\ Presione una tecla para contunuar...";
  103.  getch();
  104.  return;
  105. }
  106.  
  107.  
  108. //FUNCION CONSULTA
  109. void ConsultaDeProductos(void)
  110. {
  111.  int cod;
  112.  clrscr();
  113.  cout<<"\n\ CONSULTA DE PRODUCTOS PARA LA VENTA";
  114.  //Abrir Archivo en solo-lectura
  115.  ArchiAceite=fopen("PRODUCTOS.SEC","rb");
  116.  if(ArchiAceite==NULL)
  117.    {
  118.    cout<<"\a\n\n\ No hay Ningun archivo Guardado";
  119.    cout<<"\n\ Presione una tecla para continuar...";
  120.    getch();
  121.    return;
  122.    }
  123.  cout<<"\n\n\n\ Cual es el codigo del producto?: ";
  124.  cin>>cod;
  125.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  126.  while(!feof(ArchiAceite))
  127.       {
  128.       cout<<"\n\ Codigos Archivados: ";
  129.       cout<<ProducAceitera.CodigoProducto;
  130.       cout<<"\n\ Codigo Ingresado: ";
  131.       cout<<cod;
  132.       if(ProducAceitera.CodigoProducto==cod)
  133.         {
  134.         cout<<"\n\n\n------------------------------------------------------";
  135.         cout<<"\nCodigo\tDescripcion\t\tUnidades\tPrecio";
  136.         cout<<"\n\------------------------------------------------------\n";
  137.         cout<<ProducAceitera.CodigoProducto;
  138.         cout<<"\t"<<ProducAceitera.Descripcion;
  139.         cout<<"\t\t"<<ProducAceitera.Unidades;
  140.         cout<<"\t\t"<<ProducAceitera.Precio<<"\n";
  141.  
  142.         fclose(ArchiAceite);
  143.         cout<<"\n\n\n Oprima una tecla para continuar...";
  144.         getch();
  145.         return;
  146.         }
  147.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  148.       }
  149.  cout<<"\n\r No se encuentra el Registro!!!";
  150.  fclose(ArchiAceite);
  151.  cout<<"\n\r Oprima cualquier tecla para continuar...";
  152.  getch();
  153.  return;
  154. }
  155.  
  156.  
  157. //FUNCION VENTA-MODIFICACION DEL PRODUCTO
  158. void Venta_ModificacionDelProducto(void)
  159. {
  160.  
  161. }
  162.  
  163.  
  164. //FUNCION ELIMINAR UN REGISTRO
  165. void EliminarRegistro(void)
  166. {
  167.  
  168. }
  169.  
  170. //FUNCION ELIMINAR ARCHIVO COMPLETO
  171. void EliminarArchivoCompleto(void)
  172. {
  173.  char opcion;
  174.  clrscr();
  175.  cout<<"\n\n ELIMINACION DE ARCHIVO COMPLETO";
  176.  cout<<"\n\n Desea eliminar el archivo Completo? S/N ";
  177.  cin>>opcion;
  178.    if(opcion=='S')
  179.    {
  180.    if(remove("PRODUCTOS.SEC")!=0)
  181.       cout<<"\a\n\n No har Archivo para eliminar";
  182.    else
  183.       cout<<"\n\n Archivo Eliminado";
  184.    cout<<"\n Pulse una tecla para continuar...";
  185.    getch();
  186.    }
  187.  
  188.  return;
  189. }
  190.  
  191.  
  192. //FUNCION DE LISTADO
  193. void ListadoDeProductos(void)
  194. {
  195.  clrscr();
  196.  
  197.  cout<<"\n\LISTADO DE REGISTROS DE PORDUCTO";
  198.  ArchiAceite=fopen("PRODUCTOS.SEC","rb");
  199.  if(ArchiAceite==NULL)
  200.    {
  201.    cout<<"\a\n\n\ No hay Ningun archivo Guardado";
  202.    cout<<"\n\ Oprima cualquier tecla para contuniuar...";
  203.    getch();
  204.    return;
  205.    }
  206.  cout<<"\n\n\n------------------------------------------------------";
  207.  cout<<"\nCodigo\tDescripcion\t\tUnidades\tPrecio";
  208.  cout<<"\n\------------------------------------------------------\n";
  209.  fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  210.  while(!feof(ArchiAceite))
  211.       {
  212.       cout<<ProducAceitera.CodigoProducto;
  213.       cout<<"\t"<<ProducAceitera.Descripcion;
  214.       cout<<"\t\t"<<ProducAceitera.Unidades;
  215.       cout<<"\t\t"<<ProducAceitera.Precio<<"\n";
  216.       fread(&ProducAceitera,sizeof(ProducAceitera),1,ArchiAceite);
  217.       }
  218.  fclose(ArchiAceite);
  219.  cout<<"\n\------------------------------------------------------";
  220.  cout<<"\n\nFin del listado";
  221.  cout<<"\n\nOprima ENTER para continuar...";
  222.  getch();
  223.  return;
  224. }


hola pues mira la funcion frewind regresa el puntero de archivo a su posicion 0, osea que cuando tu abres un archivo el puntero del archivo apunta a la posicion 0 del mismo, ahi podrias tener por ejemplo "hola" en un archivo.txt y el primer apuntador estaria en "h", entonces cuando haces lecturas a ese archivo por medio de fscanf o mas util por medio de fread (que lee estructuras ) pues el apuntador de archivo se avanza automaticamente despues de cada lectura, entonces cuando quieras volver a leer desde la posicion 0 tendiras que hacer un frewind para poder hacerlo o no podras leer desde 0 ahora que si lo que quieres es borrar una estructura dentro del archivo que ya tienes, pues en tu programa tendrias que tener cuando inicia un arreglo de estructuras para que lea todas antes que nada, entonces si borras alguna desde el rpograma que se borre el arreglo de estructura que la contiene dentro del arreglo de estructuras y despues cuando la borraste de tu arreglo pues abres el archivo de estructuras con "w+" para que se borre lo que tenia y escribas lo que acutalmente tienes ( sin la estructura que se borro oviamente ) esa es una buena opcion, tambien pues para los arreglos de estructuras usa listas enlazadas para que sea mas eficiente tu programa, como ves???? si me entendiste???

Etiquetas: cc++, dudaen, funciones, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:06.