• Giga@hdv-tech.com
  • خدمات آنلاین 24H:
    • 7189078c
    • sns03
    • 6660e33e
    • یوتیوب 拷贝
    • اینستاگرام

    ج، خواندن و نوشتن سند

    زمان ارسال: اوت-11-2023

    توضیح می دهد که چگونه برنامه نویس C یک فایل متنی یا یک فایل باینری را ایجاد، باز و بسته می کند.

    یک فایل، به معنی یک سری بایت است، خواه یک فایل متنی باشد یا یک فایل باینری، زبان C، نه تنها دسترسی به عملکردهای سطح بالا را فراهم می کند، بلکه فراخوانی زیربنایی (OS) را برای پردازش فایل ها در دستگاه ذخیره سازی فراهم می کند. . این فصل فراخوان های مهم در مدیریت اسناد را توضیح می دهد.

    باز کردن فایل

    معمولاً با استفاده از تابع fopen () برای ایجاد یک فایل جدید یا باز کردن یک فایل موجود، این فراخوانی یک شی از نوع FILE را مقداردهی اولیه می کند که حاوی تمام اطلاعات لازم برای کنترل جریان است. در اینجا نمونه اولیه این فراخوانی تابع است:

    FILE *fopen ( const char * نام فایل , const char * mode );

    در اینجا نام فایل یک رشته برای نامگذاری یک فایل است، مقدار حالت دسترسی می تواند یکی از مقادیر زیر باشد:

    الگو

    توضیحات

    r

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

    w

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

    a

    یک فایل متنی را باز کنید و در حالت ضمیمه روی فایل بنویسید. اگر فایل وجود نداشته باشد، یک فایل جدید ایجاد می شود. در اینجا، برنامه شما محتوا را به فایل هایی که از قبل دارید اضافه می کند.

    r+

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

    w+

    یک فایل متنی باز کنید که به شما امکان خواندن و نوشتن فایل را می دهد. اگر فایل از قبل وجود داشته باشد، فایل به طول صفر کوتاه می شود و اگر فایل وجود نداشته باشد، یک فایل جدید ایجاد می شود.

    a+

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

    اگر فایل باینری پردازش شده است، از حالت دسترسی زیر برای جایگزینی موارد فوق استفاده کنید:

    «rb»، «wb»، «ab»، «rb+»، «r+b»، «wb+»، «w+b»، «ab+»، «a+b»

    فایل بسته شده

    برای بستن فایل لطفا از تابع fclose() استفاده کنید. نمونه اولیه تابع به شرح زیر است:

    int fclose ( FILE *fp );

    • اگر فایل با موفقیت بسته شود، تابع fclose() صفر و اگر خطا EOF را برمی گرداند. این تابع در واقع داده ها را از بافر حذف می کند، فایل را می بندد و تمام حافظه مورد استفاده برای آن فایل را آزاد می کند. EOF یک ثابت است که در فایل هدر stdio.h تعریف شده است

    کتابخانه استاندارد C عملکردهای مختلفی را برای خواندن و نوشتن فایل ها بر اساس کاراکترها یا به عنوان یک رشته با طول ثابت ارائه می دهد.

    در فایل بنویسید

    در اینجا ساده ترین توابع برای نوشتن کاراکترها در جریان وجود دارد:

    int fputc (int c، FILE *fp);

    تابع fputc () مقدار کاراکتر پارامتر c را در جریان خروجی که fp به آن اشاره می کند می نویسد. اگر نوشتن با موفقیت انجام شود، کاراکتر نوشته شده و در صورت بروز خطا، EOF را برمی گرداند. می‌توانید از تابع زیر برای نوشتن رشته‌ای که با یک null ختم می‌شود به جریان استفاده کنید:

    int fputs ( const char *s , FILE *fp );

    تابع fputs () رشته s را در جریان خروجی جایی که fp به آن اشاره می کند می نویسد. اگر نوشتن موفق باشد، یک مقدار غیر منفی و در صورت بروز خطا، EOF را برمی‌گرداند. همچنین می توانید از تابع int fprintf استفاده کنید (FILE * fp، const char * فرمت،...) رشته ای را در فایل می نویسد. مثال زیر را امتحان کنید:

    توجه: مطمئن شوید که یک دایرکتوری tmp در دسترس دارید و اگر وجود نداشت، ابتدا باید آن را در رایانه خود ایجاد کنید.

    / tmp معمولاً یک دایرکتوری موقت در سیستم لینوکس است. اگر روی سیستم ویندوز اجرا می‌کنید، باید آن را به دایرکتوری موجود در محیط محلی تغییر دهید، مانند: C: \ tmp، D: \ tmp و غیره.

    نمونه زنده

    #شامل int main () { FILE *fp = NULL ; fp = fopen ("/tmp/test.txt", "w+"); fprintf (fp , "This is testing for fprintf...\n"); fputs ("This is testing for fputs...\n ", fp ); fclose (fp)؛ }

    هنگامی که کد بالا کامپایل و اجرا می شود، یک فایل test.txt جدید در دایرکتوری / tmp ایجاد می کند. و با استفاده از دو تابع مختلف روی دو خط می نویسد. در ادامه این فایل را می خوانیم.

    فایل را بخوانید

    زیر ساده ترین تابع برای خواندن یک کاراکتر از یک فایل است:

    int fgetc ( FILE * fp );

    تابع fgetc () یک کاراکتر از فایل ورودی که fp به آن اشاره می کند می خواند. مقدار بازگشتی کاراکتر خوانده شده و EOF در صورت بروز خطا است. تابع زیر به شما امکان می دهد یک رشته را از یک جریان بخوانید:

    char *fgets (char *buf , int n , FILE *fp );

    تابع fgets () n-1 کاراکتر را از جریان ورودی هدایت شده توسط fp می خواند. رشته خوانده شده را در بافر باف کپی می کند و یک کاراکتر تهی در انتها برای پایان دادن به رشته اضافه می کند.

    اگر این تابع قبل از خواندن آخرین کاراکتر با یک کاراکتر خط شکسته '\ n' یا EOF انتهای فایل روبرو شود، فقط به کاراکترهای خوانده شده، از جمله شکستن خط، باز می گردد. همچنین می‌توانید از تابع int fscanf (FILE * fp، const char * فرمت،...) برای خواندن رشته از فایل استفاده کنید، اما وقتی با اولین فاصله و شکست خط مواجه می‌شوید، خواندن آن متوقف می‌شود.

    نمونه زنده

    #شامل int main () { FILE *fp = NULL ; char buff [255]; fp = fopen ("/tmp/test.txt", "r"); fscanf (fp , "%s ", buff ); printf ("1: %s \n "، buff ); fgets (buff , 255, (FILE *)fp ); printf ("2: %s \n "، buff ); fgets (buff , 255, (FILE *)fp ); printf ("3: %s \n "، buff ); fclose (fp)؛ }

    هنگامی که کد بالا کامپایل و اجرا می شود، فایل های ایجاد شده در قسمت قبل را می خواند و نتایج زیر را ایجاد می کند:

    1: این 2: در حال تست fprintf است...

    3: این تست برای fputs است...

    اول، متد fscanf() فقط This .. را می خواند زیرا با یک فاصله در پشت روبرو می شود. دوم، تابع fgets () را فراخوانی کنید تا قسمت باقیمانده تا انتهای خط خوانده شود. در نهایت برای خواندن کامل ردیف دوم، fgets () را فراخوانی کنید.

    تابع I/O باینری

    دو تابع زیر برای ورودی و خروجی باینری استفاده می شود:

    size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );

    هر دو تابع برای بلوک‌های ذخیره‌سازی – معمولاً آرایه‌ها یا ساختارها – خوانده و می‌نویسند.

    موارد فوق در مورد خواندن و نوشتن فایل C متعلق به HDV Phoelectron Technology Ltd.، یک عملیات فنی نرم افزاری است. و شرکت تجهیزات مرتبط با شبکه (مانند: ACONU/ ارتباطONU/ باهوشONU/ فیبرONUو غیره) تیم نرم افزاری قدرتمندی را گرد هم آورده است، برای هر مشتری خواسته های انحصاری که به آن نیاز دارند را سفارشی می کند، همچنین اجازه می دهد محصولات ما هوشمندتر و پیشرفته تر شوند.



    وب