آموزش کار با فایل ها ( ویرایش ایجاد ) در c++

آموزش کار با فایل ها ( ویرایش ایجاد ) در c++

تعریف فایل در c++ :

مجموعه اطلاعات مرتبط به همدیگری که تحت نام مشخصی روی حافظه جانبی مشخص میشوند.

در فایل های متنی اطلاعات به صورت کدهای اسکی ذخیره میشوند.

در فایل های باینری اطلاعات به صورت صفر و یک نگهداری میشوند.

اشاره گر به فایل :

FILE * نام اشاره گر ;

برای کار با فایل ها ابتدا باید یک اشاره گر از نوع فایل تعریف کنیم و آن را به فایل مورد نظر نسبت دهیم.

کار با تابع fopen در c++ :

fopen  ( حالت باز شدن و نام فایل )

برای باز کردن فایل از تابع fopen استفاده میکنیم. با باز شدن فایل

حافظه ای به آن اختصاص داده میشود و اطلاعاتی در مورد فایل در این حافظه نگهداری می گردد.

تابع fopen آدرس این حافظه را باز می گرداند. این آدرس باید در اشاره گری از نوع فایل ذخیره شود.


void main ()
{
   FILE *fp ;
   fopen( " Test.txt " , " r " )
}

اگر تابع fopen نتواند فایل مورد نظر را باز کند مقدار Null بازمیگرداند.

فایل را میتوان به یکی از سه حالت زیر باز کرد :

1- ورودی (خواندنی ) :

در این حالت فقط میتوان اطلاعات موجود در فایل را خواند.

2- خروجی (نوشتنی ) :

در این حالت فقط میتوان اطلاعات را در فایل نوشت.

3- ورودی-خروجی :

در این حالت اطلاعات قبلی فایل قابل خواندن است و میتوان اطلاعات جدیدی را به آن اضافه کرد.

حالت باز شدن یکی از موارد زیر می باشد :

1- فایل متنی را به صورت خواندنی باز می کند(ورودی) r یا rt

2- فایل متنی را به صورت نوشتنی یا (خروجی) باز میکند. w یا wt

3- فایل متنی را طوری باز میکند که بتوان اطلاعات جدید را در انتهای آن نوشت. a یا at

برای باز کردن به صورت باینری از rb , wb , ab استفاده میشود.

حالت r :

اکر فایل وجود نداشته باشد تابع fopen مقدار Null برمیگرداند.

حالت w :

اگر فایل موجود نباشد در حافظه پویا در c++  ایجاد می گردد و اگر موجود باشد اطلاعات قبلی آن را پاک میکند.

حالت a :

اگر فایل موجود باشد اطلاعات قبلی آن باقی می ماند و اگر موجود نباشد ایجاد میشود.

برای باز کردن فایل به صورت ورودی خروجی از یکی از حالت های زیر استفاده می کنیم.

r+          w+          a+

rb+        wb+         ab+

در تمام این حالات فایل به صورت ورودی خروجی باز میشود یعنی هم میتوان

اطلاعاتی در آن نوشت و هم اطلاعات فایل را خواند.

تفاوت ها :

در حالت +r اگر فایل وجود نداشته باشد تابع fopen مقدار Null برمی گرداند.

در حالت +wb اگر فایل وجود نداشته باشد ایجاد می گردد و اگر موجود باشد

اطلاعات قبلی آن از بین می رود. در حالت +a اگر فایل موجود نباشد ایجاد می گردد

و اگر وجود داشته باشد اطلاعات قبلی آن محفوظ باقی می ماند.

مثال :

برنامه ای بنویسید که نام یک فایل را دریافت کند و بگوید که آیا این فایل وجود دارد یا خیر.


# include < stdio.h >
void main ()
{
    char name[256];
    FILE *fp ;
    gets(name);
    fp = fopen( name , "r" );
    if (! fp )
       cout<< " Not find " ;
    else
    {
       cout<< " yes " ;
       fclose ( fp );
    }
}

کار با تابع fclose در c++ :

برای بستن فایل استفاده می شود.

fclose ( نام اشاره گر ) ;

کار با تابع fclose all در c++ :

کلیه ی فایل هایی را که در حال حاضر باز هستند می بندد.

کار با تابع getc در c++ :

برای خواندن کاراکتر از فایل متنی استفاده می شود.

نکته :

نام تمام این توابع با اشاره گر باید دریافت شود.

getc ( اشاره گر فایل );

مثال :

برنامه ای بنویسید که نام فایل را گرفته و محتویاتش را روی صفحه نمایش دهد.

(اگر به انتهای فایل رسیده باشیم تابع getc مقدار 1- برمی گرداند.


void main ()
{
    FILE *fp ;
    char s[256] , ch ;
    gets(s);
    fp = fopen( s , "rt" );
    if ( ! fp )
    {
       cout<< " Not exist " ;
       Exit(0);
    }
    while ( (ch=getc(fp))! = -1 )
       putch(ch);
    fclose(fp);
}

کار با تابع putc در c++ :

این تابع برای نوشتن کاراکتر در فایل متنی استفاده می شود.

putc ( اشاره گر فایل و کاراکتر );

putc ( ch , fp );