# include <iostream>
# include <fstream>
# include <string> 
using namespace std;

struct primera


    # include <iostream>
    # include <fstream>
    # include <string> 
    using namespace std;

    struct primera
    {
        int ID;
        char nombre [50];
        char fecha_de_alta [10];
        char fecha_de_caducidad [10];
        int cantidad_en_existencia;
        char marca_presentacion [50];
        float costo_para_mi;
        float bonificacion; 
        float precio_venta;

    } arr1 [100];
    int i=0;


    void genera_archivo();


    void main ()
    {
        int x=0;
        int ID_cont=0;
        float IVA=.16;
        float R_IVA;
    while(x!=2)
    {
        system("cls");
        cout << "\n\t\t\t\t BIENVENIDO A FARMACIA C++";
        cout << "\n\t\t\t\ SI DESEA CAPTURAR PRODUCTO, PRESIONE 1";
        cout << "\n\t\t\t SI NO DESEA CAPTURAR PRODUCTO, PRESIONE 2\n";
        cout<< "\n";
    cin>> x;
    cout<< "\n";

    switch (x)
    {
    case 1:
        { 
            cout << "ID: ";
            arr1[i].ID=ID_cont;
            ID_cont++;
            cout << arr1 [i].ID <<" ";
            cout << "\n";
            cout << "NOMBRE: ";
            cin >> arr1 [i].nombre;
            cout << "FECHA DE ALTA: ";
            cin >> arr1 [i].fecha_de_alta;
            cout << "FECHA DE CADUCIDAD: ";
            cin >> arr1 [i].fecha_de_caducidad;
            cout << "CANTIDAD EN EXISTENCIA: ";
            cin >> arr1 [i].cantidad_en_existencia;
            cout << "MARCA O PRESENTACION: ";
            cin >> arr1 [i].marca_presentacion;
            cout << "COSTO UNITARIO: $ ";
            cin >> arr1 [i].costo_para_mi;
            cout << "NO BONIFICACION\n";
            cout << "IMPUESTO al 16% \n";
            arr1 [i].bonificacion=IVA;
            R_IVA=arr1 [i].costo_para_mi*IVA;
            arr1 [i].precio_venta=R_IVA+arr1 [i].costo_para_mi;
            cout <<"PRECIO DE VENTA: $";
            cout << arr1 [i].precio_venta <<" ";
            genera_archivo();
            i++;
            cout << "\n";
        break;
            }
    case 2:
        {
            cout << "\t\t\tUSTED HA ELEGIDO NO REGISTRAR PRODUCTUCTO\n";
            cout << "\t\t\t\tGRACIAS POR USAR FARMACIA C++";
            break;
        }

    default:
        {
            cout << "\t\tERROR RESPUESTA NO RECIBIDA, ESCOJA UNA OPCION PORFAVOR\n";
            break;
        }

     }
    }
    }
    void genera_archivo()
    {
        ofstream archivo;
        archivo.open("farmacia.txt",ios::app);
        archivo << arr1 [i].ID;
        archivo << "\n";
        archivo << arr1 [i].nombre;
        archivo << "\n";
        archivo << arr1 [i].fecha_de_alta;
        archivo << "\n";
        archivo << arr1 [i].fecha_de_caducidad;
        archivo << "\n";
        archivo << arr1 [i].cantidad_en_existencia;
        archivo << "\n";
        archivo << arr1 [i].marca_presentacion;
        archivo << "\n";
        archivo << arr1 [i].costo_para_mi;
        archivo << "\n";
        archivo << arr1 [i].bonificacion;
        archivo << "\n";
        archivo << arr1 [i].precio_venta;
        archivo << "\n";
        archivo << "\n";
        i++;
        archivo.close();
    }

Not sure what your question is. The genera_archivo() sub routine is already reading the elements of your structure. To read a file instead of writing to a file, you could use ifstream and just change the operator to >>.

On a side note, you're incrementing i twice every time you write a record to the file, once in genera_archivo() and again when right after you call it. This means that every other item in your array won't be filled.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.