نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل با مفهوم تابع seekg (یک ماه بیشتره که روش گیر کردم)

  1. #1
    کاربر دائمی آواتار vasilopita
    تاریخ عضویت
    آبان 1388
    محل زندگی
    Dezfoul
    پست
    253

    Unhappy مشکل با مفهوم تابع seekg (یک ماه بیشتره که روش گیر کردم)

    سلام. لطفا کد زیر که توی محیط کنسول ویژال نوشته شده رو اجرا کنید.
    اول گزینه 1 رو بزنید بعد از گرفتن نام یه شماره حساب بهش بدید بعد بقیه درخواست ها رو هم جواب بدید بعد دوباره از منو گزینه 1 رو بزنید و همون شماره حساب قبلی رو بدید بعد از اینکه به شما گفت که شماره حساب قابل قبول نیست یه شماره جدید بهش بدید "اینجا مشکل خودش رو نشون میده" . لطفا کمکم کنید 1 ماه بیشتره که روش گیر کردم.
    #include<fstream>
    #include<iostream>
    #include<conio.h>
    #include<stdio.h>
    using namespace std;
    char menu();
    void get_info();
    struct customer
    {
    bool state;
    char name[21];
    int balance;
    int account;
    int kind;
    customer()
    {
    state=0;
    }
    };
    void main()
    {
    char chr;
    while(1)
    {
    chr=menu();
    switch(chr)
    {
    case'1': get_info(); break;
    case '6':exit(0); break;
    }
    }
    }
    char menu()
    {
    char c;
    cout<<"1: Enter Data\n6: Exit\n\a";
    cin>>c;
    return c;
    }
    void get_info()
    {
    customer cust1;
    ofstream out("customer1.dat",ios::out|ios::binary);
    ifstream in("customer1.dat",ios::in|ios::binary);
    if(!in)
    {
    cout<<"EROR To Open File...\a\a\n";
    exit(0);
    }
    int buffer;
    cin.get();
    cout<<"Please Enter The Below Information\n\a";
    cout<<"Customer Name:\n";
    cin.getline(cust1.name,20);
    for(;;)
    {
    cout<<"Account Number:\n";
    cin>>cust1.account;
    buffer=cust1.account;
    in.seekg(sizeof(struct customer)*cust1.account,ios::beg);
    in.read((char *)&cust1,sizeof(struct customer));
    if(cust1.state!=1)
    break;
    cout<<"This Account Number Is Not Availeable...\n\a";
    }
    in.close();
    cout<<"Customer Balance:\n";
    cin>>cust1.balance;
    cout<<"Account Type:\n";
    cin>>cust1.kind;
    cust1.state=1;
    out.seekp(sizeof(struct customer)*cust1.account,ios::beg);
    out.write((char *)&cust1,sizeof(struct customer));
    out.close();
    }



    از مسئولین سایت تقاضا دارم این پست رو پاک نکنن به خدا خیلی وقته روش گیر کردم هر کاری می کنم نمیشه

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: مشکل با مفهوم تابع seekg (یک ماه بیشتره که روش گیر کردم)

    خب اونجا شما چه زمانی state رو تغیر میدید که بهش شرط میگذارید؟
    در ضمن نباید توسط seekp به محلی اشاره کرد که عددها سری نیستن مثلا اگر عدد اول برای account شماره 100 قرار بگیره اونوقت شما نمیتوانید توسط seekp به مکان sizeof(struct customer)*cust1.account پرش کنید دلیلش اینه که هنوز چنین فضایبی داخل فایل وجود ندارد.
    به همین دلیل باید این عدد رو بصورت سری و از شماره 1 شروع بشه و برای رکورهای بعد +1 بشه میتوانید این عدد رو با کد زیر برای مشتری های بعدی بصورت اتومات ارائه بدید.

    in.seekg(0,ios::end);
    cust1.account = in.tellg()/sizeof(struct customer);

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •