بایگانی برچسب: s

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فایل ها – قسمت دوم

فرض کنید فایلی با نام a.txt در این مسیر قرار دارد:

C:\TurboC++\Disk\TurboC3\a.txt

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

C:\TurboC++\Disk\TurboC3\a.txt

مسیر نسبی: چون برنامه ی توربو در این مسیر C:\TurboC++\Disk\TurboC3\BIN باز می شود برای دسترسی به فایل باید یک دایرکتوری به عقب بیاییم و سپس فایل را باز کنیم.
در داخل هر دایرکتوری دو دایرکتوری وجود دارد ( در واقع فایل هستند ) با نام های . (نقطه) و .. ( دونقطه ) که ما آنها را نمی بینیم.
برای دیدن آن ها در ویندوز cmd را فعال باز می کنیم سپس دستور dir را می نویسیم که علاوه بر فایل ها و دایرکتوری ها فایل نقطه و دو نقطه نیز نمایش داده می شوند.
برای دیدن آن ها در لینوکس پس از باز کردن terminal دستور ls –a را نوشته و این دو فایل یا دایرکتوری نمایش داده می شوند.
نقطه نشان دهنده ی همان دایرکتوری و دو نقطه برای دسترسی به یک دایرکتوری عقب تر است.
پس مسیر نسبی فایل a.txt می شود :

..\a.txt

در cmd ویندوز:
cmd_file
در terminal لینوکس:
terminal_file
با زدن دستور ls -a میتوانیم آن ها را ببینیم.
توضیحات: یک دایرکتوری به عقب میاییم سپس به فایل دسترسی پیدا می کنیم.
مثال: در دایرکتوری زیر یک فایل با نام a.txt قرار دارد که متن داخل آن hello world است با مسیر نسبی به آن دسترسی پیدا کنید و متن آن را نمایش دهید

C:\TurboC++\Disk\TurboC3\a.txt

خروجی:

hello world

توضیحات: مسیر فایل نسبی را در توضیحات بالا گفتم و طریقه ی خواندن فایل را هم در مقاله ی قبلی توضیح داده ام.

نوشتن فایل

برای نوشتن در فایل باید فایل را در حال w (write) باز کنیم و با استفاده از تابع های مخصوص نوشتن در فایل نوشت.
نکته: وقتی می خواهیم فایلی را باز کنیم به تابع fopen مسیر می دهیم و اگر فایل باشد تمام متن داخل آن پاک می شود و متنی که مورد نظرمان است را در فایل می نویسیم ولی اگر فایل نباشد یک فایل ایجاد می شود و سپس متنمان را در آن وارد می کنیم.
مثال: فایلی در مسیر زیر ایجاد کنید با نام a.txt که متن hello world را در آن نوشته و آن را save کنید سپس با برنامه نویسی در توربو C++ متن hello world را با کاراکتر h عوض کنید.
مسیر save فایل a.txt :

C:\TurboC++\Disk\TurboC3\BIN

کد:

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

در حالت write آن را باز می کنیم یعنی به جای گذاشتن حرف r به جای آرگومان دوم تابع fopen حرف w را می گذاریم.
کد:

تابع fputc یک کاراکتر را به عنوان آرگومان اول گرفته و در فایلمان که به عنوان آرگومان دوم می گیرد قرار می دهد.
کد:

همانگونه که وقتی متنی را در فایلی تغییر می دهیم باید آن را save کنیم در حالت نوشتن هم باید در آخر پس از انجام کارهایمان در فایل آن را با تابع fclose که آرگومان آن نوع متغیر فایل است ببندیم.

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

از تابع fputs استفاده می کنیم.
مثال: ابتدا فایل a.txt را حذف می کنیم.
کد:

توضیحات:
چون فایلمان وجود ندارد پس برنامه یک فایل با نام a.txt در مسیر پیش فرض که برنامه ی توربو در آن مسیر باز می شود ایجاد می کند سپس تابع fputs یک رشته را به عنوان آرگومان می گیرد و در فایل مورد نظرمان که به عنوان آرگومان دوم به آن داده ایم می نویسد.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فایل ها – قسمت اول

در این مقاله قصد آموزش چگونگی خواندن متن از یک فایل را داریم.
برنامه های مورد نظرمان برای کار با فایل در ++Turbo C ایجاد می شوند.
چون فایل ها در هارد ذخیره شده اند پس برای خواندن آن باید یک متغیر از نوع فایل که به صورت اشاره گر هست ایجاد کنیم سپس با آن میتوانیم دستوراتمان را بر روی فایل مورد نظر اعمال کنیم.

مسیر های فایل

ابتدا در مورد مسیرهای فایل بحث می کنیم.
هر فایل دو مسیر برای اجرا دارد:
۱- نسبی
۲- مطلق
مسیر مطلق به مسیری می گویند که از مقصد اصلیمان باشد.
مثال: فایلی با نام a.txt در درایو C در پوشه ۱ در پوشه ی ۲ قرار دارد.
فرض کنید ما پوشه ای را باز نکرده ایم و در desktop سیستم هستیم یا در درایو D هستیم.
مسیر مطلق برای دستیابی به فایل a.txt:

C:\1\2\a.txt

چون مقصد اصلیمان از یکی از درایو های کامپیوتر شروع می شود پس باید به این صورت باشد که در مسیر بالا می بینید.

مسیر نسبی:

حالا فرض کنید ما در درایو C و پوشه ی ۱ باشیم.
مسیر فعلی ما:

C:\1\

مسیر نسبی مسیری است که نسبت به مکان فعلی ما داده می شود.
طبق تعریف بالا مسیر نسبی برای دستیابی به فایل a.txt این است:

\۲\a.txt

وقتی برنامه ی توربو را باز می کنید این برنامه در این مسیر باز می شود ( مسیر پیش فرض در هنگام نصب برنامه ) :

C:\TurboC++\Disk\TurboC3\BIN

حالا فرض کنید فایلی با نام a.txt در این پوشه BIN که برنامه ی توربو در آن باز می شود داریم
مسیر های دستیابی به فایل از طریق برنامه نویسی در توربو :

مسیر مطلق:

C:\TurboC++\Disk\TurboC3\BIN\a.txt

نسبی:

a.txt

چون برنامه ی توربو در دایرکتوری BIN اجرا می شود و هم فایل ما در این پوشه قرار دارد پس نیازی نیست که مسیری به برنامه دهیم.
نکته: در برنامه نویسی در زبان ++C و اکثر زبان های برنامه نویسی دیگر می توانید از هر دو نوع مسیر دهی استفاده کنید.
مثال: ابتدا در پوشه ی BIN یک فایل با نام a.txt ایجاد کنید و این متن را در آن بنویسید hello world سپس با استفاده از برنامه نویسی در ++Turbo C متن فایل را بخوانید.

خروجی: کاراکتر h
توضیحات: ما ابتدا یک متغیر از نوع FILE ( برای استفاده از آن باید هدر فایل stdio.h را به برنامه اضافه کنید ) به صورت اشاره گر برای اشاره به فایل ایجاد می کنیم.
نکته: دقت کنید که FILE حتما با حروف بزرگ باشد.
سپس با استفاده از تابع fopen فایل را باز می کنیم.
آراگومان های تابع fopen :
۱- مسیر فایل : هم می تواند مطلق باشد و هم نسبی
۲- مد استفاده از فایل را نشان می دهد : چون ما فعلا می خواهیم فقط از فایل بخوانیم پس از r که مخفف read است استفاده می کنیم.
چون در فایل متن است پس یک متغیر از نوع char ایجاد می کنیم.

توضیح کد بالا : تابع fgetc یک کاراکتر از فایل مورد نظر می خواند. آرگومان آن هم متغیر fp است که فایلمان را با آن باز می کنیم.
ما هم در این خط کد یک کاراکتر از فایلمان می خوانیم و آن را در متغیر ch قرار می دهیم و در خط بعد هم آن را با cout نمایش دادیم.
حالا این کد را امتحان می کنیم:

خروجی:
file1

توضیحات: در این حالت ما دو کاراکتر را از فایل خواندیم.
حالا مشکل ما اینجا است که برای خواندن تمام کاراکتر ها چکار کنیم ( شاید یک متن هزار خطی باشد ).
خب پس ما نمیدانیم که فایلمان چند کاراکتری است و در این موارد ما از حلقه ی while استفاده می کنیم.
خب می رسیم به شرط حلقه:
در آخر متن هر فایل یک کاراکتر End Of File) EOF ) قرار دارد که ما آن را نمیبینیم و این کاراکتر برای آن است که سیستم متوجه شود متن فایل به پایان رسیده است.
برنامه جدید برای خواندن تمام متن داخل فایل a.txt :

خروجی:
hello world
توضیحات: تابع feof که آرگومان آن متغیری است که به فایل اشاره می کند در هر دوره یک کاراکتر از فایل می خواند که اگر کاراکتر برابر با EOF نبود صفر را و اگر بود یک را برمیگرداند.
نکته: می توانیم به جای NULL از صفر استفاده کنیم.
ادامه ی توضیحات: تابع در ابتدا کاراکتر h را می گیرد و صفر را برمی گرداند و چون صفر با NULL یا صفر برابر است پس شرط داخل while درست است و حالا وارد بلوک حلقه ی while می شویم : گرفتن یک کاراکتر از فایل و نمایش آن.
این روند تا کاراکتر EOF که در آخر متن قرار دارد ادامه می یابد و در آخر تابع feof کاراکتر EOF را می گیرد و ۱ را برمی گرداند و چون ۱ با صفر یا NULL برابر نیست حلقه شکسته می شود و در آخر هم تابع fclose را داریم که فایل را می بندد.