خواندن یک فایل در c++
نویسنده : رضا قربانی | زمان انتشار : 09 اسفند 1399 ساعت 22:11
جهت انجام پروژه های دانشجویی و یا تمرینهای برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید
@AlirezaSepand
مقدمه
با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. در این جلسه قصد داریم توابع I / O در C و کار با فایل ها در C از جمله خواندن از فایل در c را مورد بحث قرار دهیم. اولین مبحث کار با فایل ها در C.
کار با فایل ها در C
در این فصل دستگاه های ورودی و خروجی استاندارد که توسط زبان برنامه نویسی C مورد استفاده قرار می گیرند، توضیح داده شده است.
این فصل کار با فایل ها در C یعنی چگونگی ایجاد، باز و بستن فایلهای متنی یا فایل های باینری را برای ذخیره سازی داده ها به برنامه نویسان C آموزش می دهد.
یک فایل نشان دهنده توالی بایت است، صرف نظر از آن که یک فایل متنی یا یک فایل باینری باشد.
زبان برنامه نویسی C دسترسی به عملکردهای سطح بالا و همچنین سطوح پایین (سطح سیستم عامل) را برای رسیدگی به فایل در دستگاه های ذخیره سازی خود فراهم می کند.این فصل به شما در مورد کار با فایل ها در C می گوید.
باز کردن فایل ها
شما می توانید از تابع ()fopen برای ایجاد یک فایل جدید یا برای باز کردن یک فایل موجود استفاده کنید.
این فراخوانی یک شی از نوع FILE را که شامل تمام اطلاعات لازم برای کنترل جریان است، راه اندازی می کند.
نمونه اولیه این فراخوانی تابع به شرح زیر است:
مثال :
FILE *fopen(constchar*filename,constchar*mode); |
در اینجا، filename رشته ی حروف است که از آن برای نام فایل استفاده می کنید و حالت دسترسی می تواند یکی از مقادیر زیر باشد:
ردیف | حالت و توضیحات |
۱ | r
یک فایل متنی موجود برای هدف خواندن باز می شود. |
۲ | w
فایل متنی را برای نوشتن باز می کند. اگر آن وجود نداشته باشد، یک فایل جدید ایجاد می شود. در اینجا برنامه شما شروع به نوشتن مطالب از ابتدای فایل می کند. |
۳ | a
یک فایل متنی برای نوشتن در حالت افزودن باز می شود. اگر آن وجود نداشته باشد، یک فایل جدید ایجاد می شود. در اینجا برنامه شما محتوا را در محتویات فایل موجود اضافه می کند. |
۴ | +r
فایل متنی را برای خواندن و نوشتن باز می کند. |
۵ | +w
فایل متنی را هم برای خواندن و هم برای نوشتن باز می کند. اگر فایل وجود داشته باشد. اول فایل را به صفر می رساند ، در غیر این صورت اگر فایل وجود نداشته باشد یک فایل ایجاد می کند. |
۶ | +a
فایل متنی را هم برای خواندن و هم برای نوشتن باز می کند.اگر فایل وجود ندارد، این فایل را ایجاد می کند. خواندن از ابتد آغاز می شود، اما نوشتن فقط می تواند از انتهای محتوای موجود اضافه شود. |
اگر قصد دارید فایلهای باینری را مدیریت کنید، به جای موارد فوق از حالتهای دسترسی زیر استفاده کنید .
مثال :
"rb","wb","ab","rb+","r+b","wb+","w+b","ab+","a+b" |
بستن یک فایل
برای بستن یک فایل از تابع ()fclose استفاده کنید. نمونه اولیه این تابع است:
تابع(-)fclose صفر در موفقیت و EOF را اگر خطایی در بستن فایل وجود داشته باشد برمی گرداند.
این تابع عملا هر اطلاعاتی را که در بافر فایل در حال پردازش است، از بین می برد.
فایل را بسته و حافظه مورد استفاده برای فایل را آزاد می کند.
EOF یک ثابت است که در header file stdio.h تعریف شده است.
برای خواندن و نوشتن یک فایل توابع مختلفی توسط کتابخانه استاندارد C ارائه شده ، کراکتر به کاراکتر یا در قالب یک رشته با طول ثابت .
نوشتن در فایل
در زیر ساده ترین راه برای نوشتن یک کاراکتر در یک فایل را مشاهده می کنید:
مثال :
intfputc(intc,FILE *fp); |
تابع()fputcمقدار کاراکتر آرگومان c را توسط fp به رشته خروجی اشاره شده، می نویسد.
اگر عمل نوشتن موفقیت آمیز باشد مقدار صفر و در غیر این صورت EOF باز می گرداند.
در زیر ساده ترین تابع برای نوشتن کاراکترهای خاص آمده است.
مثال :
intfputs(constchar*s,FILE *fp); |
تابع()fputs رشته s را توسط fp به خروجی اشاره شده می نویسد.
این یک مقدار غیر منفی را با موفقیت برمی گرداند، به عبارتی اگر عمل نوشتن موفقیت آمیز باشد مقدار صفر و در غیر اینصورت ،در صورت بروز هر گونه خطا EOF برگشت داده می شود. شما می توانید از int fprintf(FILE *fp,const char *format, …) برای نوشتن یک رشته در یک فایل استفاده کنید. مثال زیر را امتحان کنید.
مثال :
#include <stdio.h> main(){ FILE *fp; 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 in /tmpایجاد می کند.
و دو خط را با استفاده از دو توابع مختلف می نویسد. اجازه دهید این فایل را در بخش بعدی بخوانیم.
قبل از اجرا مثال بالا مطمئن شوید که پوشه tmp وجو دارد.
اگر وجود نداشت آن را ایجاد کنید.در ادامه خواندن از فایل در c را داریم.
خواندن از فایل در c
در زیر، ساده ترین راه برای خواندن یک کاراکتر از یک فایل است . خواندن از فایل در c :
تابع()fgetcیک کاراکتر را توسط fp از فایل ورودی که به آن داده شده می خواند که مقدار بازگشتی کاراکتر خوانده شده است.
یا در صورت هر گونه خطا، EOF را باز می گرداند. تابع زیر اجازه می دهد تا یک رشته از فایل خوانده شود.
مثال :
char*fgets(char*buf,intn,FILE *fp); |
توابع ()fgets به تعداد n-1 کاراکتر از فایلی که به آن داده می شود را توسط fp می خواند و در بافر buf قرار می دهد.
سپس مقدار null را به منظور خاتمه دادن به رشته، به انتهای بافر buf اضافه می کند.
اگر تابع fgets() با یک کاراکتر خط جدید یا EOF رو به رو شود، عملیات خواندن را متوقف می کند.
iهمچنین فقط کاراکتر خوانده شده تا قبل از خط جدید یا EOF باز گردانده می شوند.
همچنین می توانید از تابع fscanf() نیز به منظور خواندن یک رشته از فایل استفاده کنید. الگوی این تابع را در زیر مشاهده می کنید:
مثال :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> main(){ FILE *fp; charbuff[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:This 2:istesting forfprintf... 3:Thisistesting forfputs... |
بیایید کمی بیشتر در مورد آنچه اتفاق افتاده را در اینجا ببینید.
اول،()fscanf فقط می خواند چون بعد از آن با فضای خالی مواجه شده است، دوم ،فراخوانی برای()fgets است که خط باقی مانده را می خواند تا اینکه با انتهای خط روبرو شود. در نهایت، فراخوانی () fgets خط دوم به طور کامل خوانده می شود.بعد از خواندن از فایل در c توابع ورودی / خروجی باینری را داریم.
توابع ورودی / خروجی باینری- I / O در C
خب حالا I / O در C . دو تابع وجود دارد که می توانند برای ورودی و خروجی باینری
مثال :
size_t fread(void*ptr,size_t size_of_elements,size_t number_of_elements,FILE *a_file); size_t fwrite(constvoid*ptr,size_t size_of_elements,size_t number_of_elements,FI |
هر دو این توابع باید برای خواندن و یا نوشتن بلوک های از حافظه (معمولا آرایه ها و ساختارها) استفاده شوند. به عبارت دیگر برای نوشتن محتویات یک آرایه یا ساختار درون یک فایل و همچنین برای خواندن این محتویات از فایل توابع فوق استفاده می شوند.
کلام پایانی
خب اینم از کار با فایل ها در C از جمله خواندن از فایل در c و نوشتن آن و I / O در C .امیدوارم لذت برده باشین. آموزش رو در جلسه بعد مباحث رو با پیش پردازنده در زبان C و ماکروهای از پیش تعریف شده و عملگرهای پیش پردازنده ادامه خواهیم داد. همراهمون باشید.
منبع: pvlearn.com