تعیین انتهای خط: 
انتهای خط در فایل های متنی توسط کلید RETURN مشخص میشود ولی در فایل های باینری انتهای خط نداریم.
اطلاعات بصورت رکورد کنار هم قرار میگرند تا فایل تمام شود.
ج: تعیین انتهای فایل: در فایل های متنی توسط دو حر ف TA (در مبنای 16 (دکمه های CTRL+Z) انتهای فایل مشخص میشود.
در فایل های باینری تعداد رکورد (که توسط سیستم نگهداری میشود) انتهای فایل مشخص میشود.
باز کردن فایل 
هر فایلی که میخواهیم مورد استفاده قرار دهیم ابتدا باید آن را باز کرد.
تابع fo pen برای باز کردن فایل میباشد.
بستن فایل: 
بعد از اینکه برنامه کارش با فایل تمام شد فایل را باید بست.
تابع fclose() برای بستن فایل میباشد.
نوشتن و خواندن فایل (یک کاراکتر) 
- تابع pute () برای نوشتن یک کاراکر در فایل میباشد.
تابع gete() برای خواندن یک کاراکر از فایل میباشد.
خواندن و نوشتن رشته ها در فایل 
- تابع fgets () برای خواندن رشته از فایل 
- تابع puts() برای نوشتن رشته در فایل 
حذف فایل برای حذف فایل از تابع remove () استفاده میشود.
- توابع فوق در فایل سرآیند stdio.h قرار دارند.
سازمان فایل: نحوه ذخیره شدن اطلاعات در فایل بدو صورت کلی زیر ؟؟
و بهمین صورت هم قابل دستیابی (بازیابی) هستند.
1- سازمان فایل ترتیبی (seqwen~Tiac) 
2- سازمان فایل تصادفی (RANDOM) 
- در سازمان ترتیبی: رکوردها به همان ترتیبی که از ورودی خوانده میشود در فایل قرار میگرند و هنگام بازیابی، به همان ترتیبی که در فایل ذخیره شده اند مورد بررسی قرار میگرند.
- در سازمان فایل تصادفی: هر رکورد از طریق آدرس (محل قرار گرفتن در فایل) مستقیماً مورد دستیابی قرار میگرند بدون اینکه رکوردهای قبل از آن خوانده شوند.
موارد جزئی تر و مثال به کتاب مراجعه شود.
(فصل هشتم) 
متغیرهای محلی و عمومی 
- متغیرهائی که در داخل هر تابعی تعریف شوند متغیرهای محلی های تابع نامیده میشوند و فقط هم در همان تابع معتبر و قابل استفاده هستند.
- متغیرهائیکه در خارج از توابع و در بالای تابع main() تعریف شوند در تمام توابع موجود در برنامه قابل استفاده اند و معتبر هستند را متغیرهای عمومی گویند.
توجه: 
- تفاوت های متغیرهای محلی و عمومی دراین است که:
- متغیرهای عمومی دارای مقدار اولیه صفر هستند.
توجه: اگر در تابعی متغیر همنام با متغیر عمومی تعریف شود.
این متغیر عمومی در تابع قابل استفاده نیست (معتبر نیست) و همان مقدار محلی قابل استفاده و بهره برداری است.
مثال: برای متغیرهای عمومی و محلی: 
- برنامه ای بنویسید که 5 عدد صحیح را از ورودی خوانده (در یک تابع) و مجموع مربعات آنها را در تابعی دیگر محاسبه نموده و حاصل نهایتاً در برنامه اصل چاپ گردد.
 دو تا تابع داریم int k,sq,sum.تعریف متغیرهای عمومی در خارج از تابع اصلی main() void input (void).
Void square (void).
الگوی توابع در خارج از تابع main Int main(0 { Int jg i=1.
متغیرهای کلی Printf (in ENTER RIVE NUMBER?)ز Fon(j=o ز j Input ()ز صدا زده می شود (فراخوانی)input پنج بار تابع Printf (In sum of SQARE is=:%d, sum)ز Getch ()ز returnQ ز } انتهای تابع اصلی برگشت Void input (void) شروع تابع { Scanf ( %d, &k)ز sQuare ()فراخوانی میشود sQuareتابع sum+= sQز انتشار تابع input void squahe (void) { Sq=k kز انتهای تابع: Square پس از کامبایل و اجرا ENTER Five NUMBER 47 842 Sum of SQUARE K- 149 بارگشتی RECURSIVE - بازگشتی یعنی تابعی در حین اجرا خودش را فراخوانی کند.
توابع میتوانند به طور مستقیم یا غیر مستقیم خودشان را فراخوانی کنند.
- در روش مستقیم یکی از دستورات تابع، فراخوانی خودش است.
در روش غیر مستقیم تابعی مثل F1() تابع F2 () را فراخوانی می کند و تابع F2() نیز به نوبه خود تابع f1() را فراخوای مینماید.
- توجه شود که برای ایجاد بازگشتی- الگوریتمی که توسط تابع پیاده سازی میشود باید خصوصیت بازگشتی داشته باشد.
- هر فراخوانی تابع سرانجام باید به اتمام برسد و حالت توقف و ختم فراخوانی بیش بیاید، از دستور if بصورت قابل استفاده میشود (فرم کلی) (به حال توقف و خاتمه رسیدی) if مسئله های توقف را حل کن.
Else تابع را بار دیگر فراخوانی کن مثال: در محاسبه فاکتوریل n داریم اگر اگر یعنی n=o حالت توقف و n>o فراخوانی تابع: به جای 3!
توجه شود: مکانیسم حل فاکتور ریل یک عدد مسئله بازگشتی را ایجاب می کند.
بطور کلی: اگر تابعی داشته باشیم که عددی مثل n را به عنوان آرگومال بپذیرد و فاکتوریل آن را برگرداند، این تابع باید خودش را آنقدر فراخوانی کند تا به حالت توقف برسد.
با رسیدن به حالت توقف به برنامه فراخوانی بر میگردد.
مثال: برنامه ای بنویسید که عدد n را از ورودی خوانده به کمک تابع بازگشتی، فاکتوریل آن را محاسبه به تابع فراخوان ارسال نماید.
تست شد/cffacto الگوی تابع ز Unsigned long foct (int) Int main (0 ز{long int (m) ز Clrscr () ز Printf (in ENTER A POSITIVE INTEGEN NUMBGN?) ز Scan f (y.d , &n) فراخوانی تابع ز M= fact (n) ز Print f (in NUMBER =%d , FACTORIA=%ld , n,m) ز Getch () ز Returr } Unsigned long fact (int X) { تابع خودش را فراخوانی کرده است If } پس از ترجمه و اجرا مثلاً برابر عدد 5 خواهیم داشت.
ENTER APOSMIVE NUMBCOR?5 NUMBER =5 FACTOAIAL=120 روش فراخوانی با ارجاع در این روش توابع میتوانند بیش از یک مقدار به تابع فراخوان برگردانند.در این حالت یعنی فراخوانی تابع با ارجاع به جای مقدار آرگومان تابع اصلی آدرس آنها (محلی که در حافظه قرار دارند) را در پارامتر قرار میدهد.
و از طریق آدرس این متغیرها میتوانیم محتویات آنها را پردازش کنیم.
اشاره گر یا آدرس آدرس هر متغیر در حافظه را، اشاره گر میگویند.
- حافظه کامپیوتر، مجموعه ای از چندین بایت است.
هر بایت دارای یک شماره ردیف است، شماره ردیف هر بایت از حافظه را آدرس آن محل از حافظه گویند.
- در ضمن متغیرها نامی برای محل های حافظه هستند و لذا بایت هائی از حافظه را اشغال میکنند، آدرس اولین بایتی از حافظه که به متغیر اختصاص مییابد، آدرس آن متغیر نام دارد.
متغیرها/اشاره گر اشاره گر یا آدرس در یک متغیری ذخیره میشود و آدرس هم یک عدد است پس از تعریف متغیر، باید نوع آن با نوع آدرس یکی باشد، این متغیرها را متغیرهای اشاره گر میگویند و بصورت کلی زیر تعریف میشوند.
ز متغیر *نوع یعنی متغیر اشاره گری که بخواهد آدرس متغیرهای برنامه را نگهداری کند باید در کنار متغیر اشاره گر علامت ستاره (*) قرار داد.
مثلاً P2/P1 اشاره به محل های شکل میکنند که عدد صحیح در آنها است int * pl*p2 F1,f2 به محل هائی اشاره میکنند که مقادیر آنها عدد بزرگ قرار دارد.
Char*ch Ch به محلی اشاره می کند که در آن محل یک کاراکتر قرار دارد.
عملگرها.
اشاره: دو عملگر *,& در انجام عملیات با اشاره گرها مورد استفاده قرار میگرند.
عملگر & آدرس عملوند (مقدار) خودش را مشخص میکند و عملگر * محتویات جائی را (آدرس را) مشخص میکند که عملوندش به آن اشاره میکند.
مثال: برنامه اصلی و دو تابع بنویسید که طول و عرض مستطیل را در یک تابع بخواند و برای تابع اصلی بفرستد.
سپس برنامه اصلی طول و عرض را به تابع دیگر ارسال و در تابع مساحت و محیط مستطیل محاسبه و نتیجه به برنامه اصلی باز گردانده شود و در آنجا چاپ نماید.
ص 151 توجه: چون در تابع ها، دو مقدار به برنامه اصلی ارسال میشود پس آنها را از طریق فراخوانی با ارجاع باید ارسال کرد.
تست شد Int main ( ) { ز Printf (length=%d, width=%d , len,wid) مساحت در محیط دارسال آن به برنامه اصلی: Printf (in area=%d ,perlmer=%d,area,per): { Void input (int*p1,int*p2) { ز Print f(ENTER LENGTH, WIDTH?) Scan f(%d%s.p1/p2)ز Void most (int x.
int g.
int *a,int *p) تابع most برای محاسبه طول و عرض از برنامه اصلی به تابع most ارسال مساحت و محیط از طریق پارامترهای ارجاع به برنامه اصلی ارسال میشود.
} در تبادل اطلاعات به شکل زیر توجه شود: توجه (مهم): در تعریف کلمه void آمده بود که توابعی که هیچ مقدار به تابع بر نمیگردانند با void تعریف میشوند.
ولی در مثال فوق با اینکه دو مقدار به برنامه اصل بصورت ارجاعی بر میگردانند.
؟؟
توابع کتابخانه ای فصل 9 ص 259 توابع کتابخانه ای توابعی هستند که از قبل توسط شرکت های تولید کننده نرم افزار (سیستم عامل –مترجم...) نوشته شده و همراه مترجم قرار داده اند و در صورت نیاز کافی است نام تابع به همراه داده مورد نظر به سیستم داده شود.
پس از عملیات لازم روی داده جواب را بما بر می گرداند.
توابع بعضی از توابع که بیشتر مورد استفاده اند بشرح زیر میباشند: الف: توابع ریاضی ص 259 - تابع abs( ) برای محاسبه قدر مطلق اعداد منفی میباشد.
اگر ارگومال تابع منفی باشد حاصل عدد مثبت خواهد بود.
اگر صفر و مثبت باشد حاصل صفر و یا مثبت خواهد بود.
- atan( ) acos ( ) asin ( ) که آرک سینوس آرک سینوس و آرک تانژانت int abs (int num) اعداد 1و1- را بصورت رادیال در فاصله را میدهد.
Double asin (double ang) الگوی تابع شبیه مهم هستند.
- cos ( ) tan ( ) sin ( ): سینوس و کسینوس یک زاویه که بر حسب رادیال باشد را میدهد.
Double cos (double ang) - تابع exp ( ) برای محاسبه توالی از C (پایه لگارتیم طبیعی) میدهد.
تابع f looh ( ): عدد را بطرف پائین گرد میکند.
؟؟؟
printf (%f , f loor (10-9)ز تابع pow( ) این تابع توانهای عدد در یک مبنا (base) را محاسبه می کند.
الگوی آن بصورت: Double pow (double base, double exp) یعنی base exp را محاسبه می کند.
اگر مبنا صفر و یا توان منفی یا صفر باشد تابع عمل نخواهد کرد.
و همچنین مبنا منفی و یا توان صحیح نباشد نتیجه ای نخواهد داد.
مثال: برنامه ای بنویسید که توانهای 1 تا 5 عدد 5 را محاسبه و در خروجی چاپ نماید.
تست شد.
do{ برای قسمت صحیح میدان مشخصی نکرده و برای اعشاری 2 میدان در نظر گرفته است } مثال برنامه ای بنویسید که 54 را محاسبه و چاپ کند (با استفاده از تابع pow تغییرات زیر را در برنامه فوق میدهیم.
Void main ( ) { ز Doible x=5.0 g=40 ز Prontf (%2f.pow (x.y) Getch ( ), } جواب 625.06 Log 10 ( ) , Log ( ) Log ( ) لگاریتم طبیعی عدد مثبت را در پایه Log 10 ( ) , e=2/72 لگارتیم اعداد مثبت را در پایه 10 محاسبه می کند.
Double تابع modf ( )/ الگوی آن بصورت یک عدد اعشاری را گرفته به دو قسمت صحیح و اعشاری تجزیه بما میدهد.
Double modf (doble num ,int *i) عدد اعشاری num ورودی و تابع قسمت اعشاری را برگردانده و قسمت صحیح آن را در I قرار میدهد.
مثال ص 268 مثال 14-9 تابع sqnt ( ): جذر یک عدد مثبت را میدهد.
الگوی آن double sqrt (double nom) جواب c/o خواهد بود.
ب: توابع کاراکتری ص 271 برای ورودی/خروجی کاراکترها –مقایسه آنها با یکدیگر تبدیل آنها از حروف کوچک به بزرگ و برعکس و ...
استفاده میشود و الگوی این توابع در فایل سرآیند ctgpe.h قرار دارد.
چند نمونه آن بصورتهای زیر میباشند.
تابع isalpha ( ): کاراکتری را به عنوان آرگومال پذیرفته و تشخیص میدهد که این کاراکتر یکی از حروفهای a-z و یا A-Z هست یا خیر.
اگر: عدد صفر و در غیر اینصورت عدد دیگری را بر میگرداند.
تابع های isvppen ( ) , islowen ( ): تابع اول کاراکتر دریافتی را بررسی میکند که آیا از حروف کوچک است a-z تابع دوم کاراکتر دریافتی را بررسی می کند که آیا از حروف بزرگ است A-Z از حاصل دو تابع درست باشد یک عدد برمیگرداند و اگر درست نباشد صفر بر میگرداند.
int تابع های touppen ( ) , to lowen ( ) تابع اول حرف بزرگ را به کوچک و تابع دوم حرف کوچک را به بزرگ تبدیل می کند ورودی توابع رشته ای ص 280: این توابع معمولاً برای مقایسه رشته ها پیدا کردن کاراکتر و یا رشته ای و در فایل string.h در رشته دیگر بکار میروند.
چند نمونه بطور خلاصه در زیر نام برده شده است.
- تابع memcmp ( ) کاراکتری را در یک آرایه جستجو می کند و آدرس اولین وقوع را میدهد.
- تابع memcmp ( ) قسمتی از یک آرایه را با قسمتی از آرایه دیگر مقایسه میکند.
- تابع memcpy ( ) قسمتی از یک آرایه را در آرایه دیگر کپی می کند.
- تابع strlwr ( ) رشته ای را به عنوان آرگومال پذیرفته و کلیه حروفات بزرگ آن را به کوچک تبدیل می کند.
- تابع strrcof ( ) قسمتی از یک رشته را به انتهای رشته دیگر الحاق میکند.
- تابع strncmp ( ) تعداد مشخصی از کاراکترهای