بیان کرتا ہے کہ سی پروگرامر کس طرح ٹیکسٹ فائل، یا بائنری فائل بناتا، کھولتا اور بند کرتا ہے۔
فائل، کا مطلب ہے بائٹس کی ایک سیریز، چاہے وہ ٹیکسٹ فائل ہو یا بائنری فائل، سی لینگویج، نہ صرف اعلیٰ سطح کے فنکشنز تک رسائی فراہم کرتی ہے، بلکہ اسٹوریج ڈیوائس پر فائلوں کو پروسیس کرنے کے لیے بنیادی (OS) کال بھی فراہم کرتی ہے۔ . یہ باب دستاویز کے انتظام میں اہم کالوں کی وضاحت کرے گا۔
اوپن فائل
عام طور پر ایک نئی فائل بنانے یا موجودہ فائل کو کھولنے کے لیے fopen () فنکشن کا استعمال کرتے ہوئے، یہ کال FILE قسم کی ایک چیز کو شروع کرتی ہے جس میں بہاؤ کو کنٹرول کرنے کے لیے تمام ضروری معلومات ہوتی ہیں۔ اس فنکشن کال کا پروٹو ٹائپ یہ ہے:
فائل *فوپن ( const char * فائل کا نام , const char * موڈ )؛
یہاں فائل کا نام فائل کو نام دینے کے لیے ایک سٹرنگ ہے، ایکسیس موڈ کی قدر درج ذیل اقدار میں سے ایک ہو سکتی ہے۔
پیٹرن | تفصیل |
r | ایک موجودہ ٹیکسٹ فائل کھولیں جو اسے پڑھنے کی اجازت دیتی ہے۔ |
w | ایک ٹیکسٹ فائل کھولیں جو فائل میں لکھنے کی اجازت دیتی ہے۔ اگر فائل موجود نہیں ہے تو، ایک نئی فائل بنائی جاتی ہے۔ یہاں، آپ کا پروگرام فائل کے شروع سے مواد لکھتا ہے۔ اگر فائل موجود ہے، تو اسے صفر کی لمبائی تک کاٹ کر دوبارہ لکھا جائے گا۔ |
a | ٹیکسٹ فائل کھولیں اور اپنڈ موڈ میں فائل پر لکھیں۔ اگر فائل موجود نہیں ہے، تو ایک نئی فائل بنائی جاتی ہے۔ یہاں، آپ کا پروگرام آپ کے پاس پہلے سے موجود فائلوں میں مواد کو شامل کرتا ہے۔ |
r+ | ایک ٹیکسٹ فائل کھولیں جو آپ کو فائل پڑھنے اور لکھنے کی اجازت دیتی ہے۔ |
w+ | ایک ٹیکسٹ فائل کھولیں جو آپ کو فائل پڑھنے اور لکھنے کی اجازت دیتی ہے۔ اگر فائل پہلے سے موجود ہے تو، فائل کو صفر کی لمبائی تک کاٹ دیا جاتا ہے، اور اگر فائل موجود نہیں ہے، تو ایک نئی فائل بنائی جاتی ہے۔ |
a+ | ایک ٹیکسٹ فائل کھولیں جو آپ کو فائل پڑھنے اور لکھنے کی اجازت دیتی ہے۔ اگر فائل موجود نہیں ہے، تو ایک نئی فائل بنائی جاتی ہے۔ پڑھنا فائل کے شروع میں شروع ہوتا ہے، اور لکھنا صرف اپنڈ موڈ میں ہوتا ہے۔ |
اگر بائنری فائل پر کارروائی کی گئی ہے تو، مندرجہ بالا کو تبدیل کرنے کے لیے درج ذیل رسائی موڈ کا استعمال کریں:
"rb"، "wb"، "ab"، "rb+"، "r+b"، "wb+"، "w+b"، "ab+"، "a+b"
بند فائل
فائل کو بند کرنے کے لیے، براہ کرم fclose() فنکشن استعمال کریں۔ فنکشن کا پروٹوٹائپ مندرجہ ذیل ہے:
int fclose ( فائل * 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 * format,...) فائل میں سٹرنگ لکھتا ہے۔ درج ذیل مثال کو آزمائیں:
نوٹ: یقینی بنائیں کہ آپ کے پاس دستیاب tmp ڈائریکٹری ہے، اور اگر یہ موجود نہیں ہے، تو آپ کو پہلے اسے اپنے کمپیوٹر پر بنانا ہوگا۔
/tmp عام طور پر لینکس سسٹم پر ایک عارضی ڈائریکٹری ہوتی ہے۔ اگر آپ ونڈوز سسٹم پر چلتے ہیں، تو آپ کو اسے مقامی ماحول میں موجود ڈائرکٹری میں تبدیل کرنے کی ضرورت ہے، جیسے: C: \ tmp، D: \ tmp وغیرہ۔
زندہ مثال
#شامل
جب مندرجہ بالا کوڈ کو مرتب اور عمل میں لایا جاتا ہے، تو یہ /tmp ڈائریکٹری میں ایک نئی فائل test.txt بناتا ہے۔ اور دو مختلف فنکشنز کا استعمال کرتے ہوئے دو لائنوں پر لکھتا ہے۔ آئیے اس فائل کو آگے پڑھیں۔
فائل پڑھیں
فائل سے کسی ایک کریکٹر کو پڑھنے کے لیے درج ذیل آسان ترین فنکشن ہے۔
int fgetc ( فائل * fp )؛
fgetc () فنکشن ان پٹ فائل سے ایک کریکٹر پڑھتا ہے جس کی طرف fp پوائنٹ کرتا ہے۔ واپسی کی قدر پڑھا ہوا کردار ہے اور اگر کوئی خرابی ہوتی ہے تو EOF۔ درج ذیل فنکشن آپ کو اسٹریم سے سٹرنگ پڑھنے کی اجازت دیتا ہے۔
char *fgets ( char *buf , int n , FILE *fp )؛
فنکشن fgets () fp کے ذریعہ ہدایت کردہ ان پٹ اسٹریم سے n-1 حروف کو پڑھتا ہے۔ یہ پڑھنے والی سٹرنگ کو بفر بف میں کاپی کرتا ہے اور سٹرنگ کو ختم کرنے کے لیے آخر میں ایک null کریکٹر جوڑتا ہے۔
اگر یہ فنکشن آخری کریکٹر کو پڑھنے سے پہلے ٹوٹے ہوئے لائن کریکٹر '\n' یا فائل کے اختتام کے EOF کا سامنا کرتا ہے، تو صرف پڑھنے والے حروف پر واپس آئے گا، بشمول لائن بریکس۔ آپ فائل سے سٹرنگ کو پڑھنے کے لیے int fscanf (FILE * fp, const char * format,...) فنکشن بھی استعمال کر سکتے ہیں، لیکن پہلی جگہ اور لائن بریک کا سامنا کرنے پر یہ پڑھنا بند کر دیتا ہے۔
زندہ مثال
#شامل
جب مذکورہ کوڈ کو مرتب اور عمل میں لایا جاتا ہے، تو یہ پچھلے حصے میں بنائی گئی فائلوں کو پڑھتا ہے، جس سے درج ذیل نتائج برآمد ہوتے ہیں۔
1: یہ 2: fprintf کی جانچ کر رہا ہے...
3: یہ fputs کی جانچ کر رہا ہے...
سب سے پہلے، fscanf() کا طریقہ صرف یہ پڑھتا ہے کیونکہ اس کا سامنا پیچھے کی جگہ پر ہوتا ہے۔ دوسرا، لائن کے آخر تک بقیہ حصہ پڑھنے کے لیے functon 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 )؛
دونوں فنکشنز سٹوریج بلاکس کے لیے پڑھے اور لکھے جاتے ہیں - عام طور پر صفیں یا ڈھانچے۔
سی فائل پڑھنے اور لکھنے کے بارے میں اوپر HDV Phoelectron Technology Ltd. سے تعلق رکھتا ہے، جو ایک سافٹ ویئر ٹیکنیکل آپریشن ہے۔ اور نیٹ ورک سے متعلق آلات کے لیے کمپنی (جیسے: ACاو این یو/ مواصلاتاو این یو/ ذہیناو این یو/ فائبراو این یووغیرہ) نے ایک طاقتور سافٹ ویئر ٹیم کو اکٹھا کیا ہے، ہر گاہک کے لیے خصوصی مطالبات کو اپنی مرضی کے مطابق بنائیں جنہیں اس کی ضرورت ہے، ہماری مصنوعات کو مزید ذہین اور جدید ہونے دیں۔