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

نام تاپیک: خواندن و نوشتن در فايل

  1. #1
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    Arrow خواندن و نوشتن در فايل

    سلام
    من ميخوام چندتا متغير رو تو فايل ذخيره کنم و بخونم ميشه راهنمايم کنيد
    تا حالا با فايل ها کار نکردم

  2. #2
    کاربر دائمی آواتار mehdad.koulab
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    345

    نقل قول: خواندن و نوشتن در فايل

    سلام
    اول بايد فايل رو تعريف كنيد بعد براي باز كردن فايل دستور fopen براي خواندن فايل از fread براي نوشتن روي فاين از fwrite و براي بستن فايل از fclose استفاده كنيد

  3. #3
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    ميشه يه مثال ساده بزنيد ؟!؟!؟ شرمنده !!!

  4. #4

    نقل قول: خواندن و نوشتن در فايل

    قبلا در سایت مطالب و مثال های بسیار زیادی معرفی شده است.

    از طریق جستجوی گوگل یا جستجوی پیشرفته در سایت، کلمه fopen را برای زبان C و ifstream - ofstream - fstream را برای زبان ++C جستجو کنید به نتایج بسیاری می رسید.

    سایر نمونه ها:
    برای زبان C
    C File I/O and Binary File I/O
    Random Access Files in C
    Intro to File Input/Output in C
    https://barnamenevis.org/showthread.php?t=73418

    برای C++‎
    C++‎ File I/O - binary files using fstream
    https://barnamenevis.org/showthread.php?t=94404
    https://barnamenevis.org/showth...t=97755&page=2

  5. #5
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    اونا چندتا بحث رو با هم قاطی کردن
    من که چيزی نفهميدم
    جانه من يه مثاله ساده ميخوام
    يه مثال بزن برام !!!!

  6. #6

    Smile نقل قول: خواندن و نوشتن در فايل

    با سلام خدمت شما دوست گرامی !!!!

    برای باز کردن فایل از تابع زیر استفاده میشه که تو هدر فایل stdio.h قرار داره !!!!

    FILE *fopen(char *filename,*mode)


    filename به رشته ای اشاره میکنه که حاوی نام فایل و یا محل تشکیل یا وجود آن است !!!

    mode مشخص میکند که فایل چگونه باز شود ؟؟!!!

    یک مثال ساده :

    FILE  *fp;
    fp = fopen("D:test","w");


    این دستور فایلی بنام test رو بر روی درایو D ایجاد میکند !!!






  7. #7
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    سلام
    من با اين کد ميتونم رو فايل بنويسم اما نوشته های قبلی فايل پاک ميشه

    چی کارش کنم ؟
    کد HTML:
    [right]
    FILE * pFile;
    pFile = fopen ("myfile.txt","w");
    fputs ("\n",pFile);
    fputs (name,pFile);a
    fclose (pFile);
    [/right]

  8. #8
    کاربر دائمی آواتار bsng110
    تاریخ عضویت
    آبان 1386
    محل زندگی
    اصفهان
    سن
    36
    پست
    104

    نقل قول: خواندن و نوشتن در فايل

    هوالحکیم.
    سلام.
    همانطور که تا کنون فهمیده اید، هر فایلی یک اشاره گر دارد(البته هنگامی که باز می شود) و این اشاره گر مشخص می کند که از کجای فایل اطلاعات خوانده شوند و یا در کجا اطلاعات نوشته شوند. به صورت پیش فرض، این اشاره گر به ابتدای فایل اشاره می کند به همین دلیل وقتی شما فایل را باز می کنید و روی آن می نویسید، در همان مکان های قبلی اطلاعات نوشته می شود. توسط تابع fseek می توانید این اشاره گر را جابجا کنید. این تابع اگر اشتباه نکنم، سه پارامتر می گرفت. ترتیب آنها را از MSDN پیدا کنید. یک پارامتر خود فایل، پارامتر دیگر مکانی که قصد جابجایی از آن قسمت را دارید و پارامتر دیگر مقدار جابجایی است. مثلاً در پارامتر دوم می گویید که می خواهید از ابتدای فایل جابجایی را انجام دهید و در پارامتر اندازه می گویید که از این مکان، اه اندازه 10 کاراکتر جابجا شود که بعد از اجرای این دستور، اشاره گر به دهمین کاراکتر فایل اشاره می کند. مثلاً اگر می خواهید اشاره گر را در انتهای فایل قرار دهید، بگویید که مکان جابجایی انتهای فایل باشد و مقدار جابجایی را صفر تعیین کنید. راه حل دیگر استفاده از "a" به جای "w" است. "a" مخفف کلمه append به معنای اضافه کردن یا concat کردن و یا یه همچین معنی است و باعث می شود که شما فقط بتوانید به انتهای فایل متنی اضافه کنید. دقت کنید که چنانچه فایل را در این حالت باز کنید و حتی اگر توسط تابع fseek اشاره گر فایل را به ابتدای فایل ببرید، باز هم اطلاعات در انتهای فایل درج می شود بنابراین فقط در مواردی که قصد اضافه کردن اطلاعات در انتهای یک فایل را دارید، از این تابع استفاده کنید.
    اعلان این تابع را جستم، به صورت زیر است(ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WINCE.v50.en/wceappdev5/html/wce50lrffseek.htm):

    int fseek(
    FILE* stream,
    long offset,
    int origin
    );

    همچنین خروجی آن نیز به صورت زیر است:

    If successful, fseek returns 0.
    Otherwise, it returns a nonzero value.
    On devices incapable of seeking, the return value is undefined.

    جهت مشخص کردن نواحی(region) نیز از ثوابت زیر استفاده کنید:

    SEEK_CUR : Current position of file pointer
    SEEK_END : End of file
    SEEK_SET : Beginning of file

    همچنین نکته دیگری که دیدم در کد رعایت نکردید، اطمینان از صحت باز شدن فایل می باشد. شاید می دانستید و جهت خلاصه نویسی ذکر نکردید، ولی به هر حال حواستان باشد که چنانچه تابع fopen موفق به باز کردن فایل نشد، اشاره گر NULL بر می گرداند بنابراین بعد از استفاده از fopen بررسی کنید که چنانچه اشاره گر حاصل مثلاً pFile شما برابر NULL است، به کاربر خطا دهید که نمی توانید فایل را باز کنید و یا عملی که خودتان می دانید در نظر بگیرید. من یک جایی نیاز به یک فایل temp داشتم برای همین از تابع tmpname (که در ویژوال استودیو به صورت tmpname_s وجود دارد) استفاده کردم و نام یک فایل موقتی در شاخه فایل های موقتی ویندوز را از آن گرفتم و بعد فایل را باز کردم. چنانچه موفق به باز کردن فایل نمی شدم، مجدداً نام دیگری در خواست می کردم تا بالاخره فایلی بتوانم باز کنم(البته بهتر است محدودیتی برای این کار قرار دهید وگرنه ممکن است در شرایط ویژوه ای برنامه در حلقه بینهایت بیفتد و ...). نهایتاً پس از اینکه کارم با فایل تمام شد، توسط تابع remove در کتابخانه stdio.h که نام فایل را می گیرد، آن فایل موقتی را پاک می کردم. نکته دیگری که در مورد فایل ها وجود دارد، نوع استفاده از آنها می باشد. همانطور که می دانید، فایل ها یا متنی هستند و یا باینری و شما در بالا فایل را به صورت متنی باز کرده اید و اطلاعات در آن ریخته اید و از آن اطلاعات می خوانید ولی می توانید فایل را به صورت باینری نیز باز کنید و اطلاعات در آن بنویسید و یا از آن بخوانید که این روش نیز مزایا و معایبی دارد.
    ببخشید که فرصت نکردم بیش از این توضیح دهم.
    امیدوارم که مطالب بالا مفید واقع شود.
    سوالی بود، در خدمتیم.
    یا علی
    خدانگهدارتان

  9. #9
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    سلام
    ممنون از راهنماييتون
    من دقيقا ميخوام هر دفعه سه تا متغيير رو ذخيره کنم و در صورت لزوم بخونم.
    ميشه ميشتر راهنمايم کنيد ؟

  10. #10
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    جانه من کمک کنيد
    من ميخوام از يه فايل متنی بخونم
    ساختار متنش هم به اين صورت هستش :
    hamid karimi 1367
    majid karimi 1369
    .
    .
    .
    .

  11. #11
    کاربر دائمی آواتار hamid67fathi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    WwW
    پست
    435

    نقل قول: خواندن و نوشتن در فايل

    کمک نمیکنید ؟؟؟؟

  12. #12
    کاربر دائمی آواتار bsng110
    تاریخ عضویت
    آبان 1386
    محل زندگی
    اصفهان
    سن
    36
    پست
    104

    نقل قول: خواندن و نوشتن در فايل

    هوالحکیم سلام ببخشید اگه کمی دیر شد. گفتم شاید دوستان کمک کنند! یک سوال؟ آیا بین فیلد های شما، فاصله های خالی و ... وجود دارد یا خیر؟ اگر وجود ندارد، یک راه حل ساده برایتان می گویم و الا راه حل های مختلفی وجود دارد. مثلاً اگر فیلد اول شما ali reza و فیلد دوم hasani esfahani و فیلد سوم 12 45 78 است، نمی توانید از روشی که می گویم استفاده کنید و مجبورید از روش های دیگر استفاده کنید(مثلاً از cin.getline در ++C و یا متدهای خواندن رشته و تکه تکه کردن آنها در C مانند strtok و ...). اما روش به این صورت است که برای نوشتن این مقادیر در فایل، از تابع fprintf استفاده کنید. این تابع مانند printf عمل می کند، فقط پارامتر اضافی(همان فایل شما را) می گیرد. جهت خواندن هم از fscanf استفاده کنید که مجدداً این تابع نیز فایل را به عنوان پارامتر می گیرد. مثلاً برای نوشتن در فایل از دستور ;(fprintf(myfile,"%s %s %i",name,family,age استفاده کنید و برای خواندن نیز از عبارتی دستور قبل اما با استفاده از fscanf استفاده کنید. دقت کنید که در تابع fprintf حتماً بین هر دو s% یا i% یک فاصله خالی بگذارید تا فیلد ها با فاصله خالی در فایل نوشته شوند و در هنگام خواندن از فایل نیز مشکلی بوجود نیاید. یا علی خدانگهدارتان

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

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