C زبان میں لکھیں () فنکشن

C Zban My Lk Y Fnkshn



پروگرامنگ میں فائل مینجمنٹ ایک ایسا کام ہے جس میں پروگرامر کو روانی سے کام لینا چاہیے۔ مختلف کھلے، پڑھنے اور لکھنے کے افعال کا علم ہونا ضروری ہے کیونکہ ہمیں فائلوں میں محفوظ ہونے والی معلومات کو ذخیرہ کرنے یا ضائع کرنے کے لیے ہمیشہ ان کی ضرورت ہوتی ہے۔

لینکس کے اس اشارے کے مضمون میں، آپ سیکھیں گے کہ فائلوں کو لکھنے کے لیے write() فنکشن کو کیسے استعمال کیا جائے۔







ہم اس ella کے بارے میں ہر چیز کی وضاحت کریں گے، اس کی ترکیب، کال کا طریقہ، ان پٹ اور آؤٹ پٹ آرگیومینٹس، ڈیٹا کی قسم جس کو یہ ہر معاملے میں قبول کرتا ہے، اور اسے صحیح طریقے سے کیسے بیان کرنا ہے۔



پھر، ہم اس فنکشن کے استعمال کو عملی مثالوں میں ڈال کر جو کچھ سیکھا ہے اس کا اطلاق کرتے ہیں جو ہم نے آپ کے لیے کوڈ کے ٹکڑوں اور تصاویر کے ساتھ تیار کی ہیں، جس میں C زبان میں write() کا استعمال دکھایا گیا ہے۔



آپ کو رائٹ() فنکشن کے استعمال کے بارے میں جامع معلومات حاصل کرنے کے لیے، ہم نے ایک خاص سیکشن شامل کیا ہے جو ان انفرادی غلطیوں کی وضاحت کرتا ہے جو اس فنکشن کو استعمال کرتے وقت ہو سکتی ہیں، نیز ان کی نشاندہی اور شناخت، تاکہ آپ کو ان کی موجودگی کی صورت میں فوری حل کے لیے ضروری تکنیک۔





C زبان میں Write() فنکشن کا نحو

int لکھنا ( int fd , باطل * buf , سائز_ٹی n ) ;

C زبان میں Write() فنکشن کی تفصیل

write() فنکشن ایک کھلی فائل میں لکھتا ہے۔ یہ فنکشن بفر کے مواد کو لکھتا ہے جس کی طرف 'buf' کی طرف سے اس فائل کی طرف اشارہ کیا جاتا ہے جو 'fd' ان پٹ آرگیومنٹ میں اس کے ڈسکرپٹر کے ذریعہ بیان کیا جاتا ہے۔ فائل میں لکھے جانے والے بلاک کا سائز 'n' ان پٹ آرگیومینٹ میں بیان کیا جانا چاہیے۔

رائٹ() فنکشن کے ساتھ لکھنے کے قابل ہونے کے لیے، فائل کو اوپن() فنکشن کے ساتھ کھولنا چاہیے اور اسے O_RDONLY یا O_RDWR اوصاف میں بیان کرنا چاہیے۔ بصورت دیگر، اس فنکشن کا کوئی اثر نہیں ہوگا۔



اگر کال کامیاب ہو جاتی ہے، تو یہ درج کردہ حروف کی تعداد لوٹاتا ہے۔ اگر لکھنے کے دوران کوئی غلطی ہوتی ہے، تو یہ ایک نتیجہ لوٹاتا ہے جو -1 کے برابر ہے۔ شناختی کوڈ جو غلطی کی نشاندہی کرتا ہے اسے errno عالمی متغیر سے بازیافت کیا جا سکتا ہے جس کی وضاحت 'errno.h' ہیڈر میں کی گئی ہے۔

بعد میں، آپ کو ایک سیکشن ملے گا جہاں ہم اس فنکشن کی سب سے عام غلطیوں کا پتہ لگانے اور ان کی شناخت کرنے کا طریقہ بتاتے ہیں۔

رائٹ() فنکشن کی تعریف 'unistd.h' ہیڈر میں کی گئی ہے۔ وہ جھنڈے جو فائل کو کھولنے کے لیے صفات اور وضع کی وضاحت کرتے ہیں ان کی وضاحت 'fcntl.h' میں کی گئی ہے۔ اوپن() اور رائٹ() فنکشنز کو استعمال کرنے کے لیے، آپ کو اپنے کوڈ میں ان ہیڈرز کو درج ذیل شامل کرنا ہوگا۔

#include

#include

C زبان میں Write() فنکشن کا استعمال کرتے ہوئے فائل میں کیسے لکھیں۔

اس مثال میں، ہم 'example.txt' کے نام سے ایک خالی ٹیکسٹ فائل لکھتے ہیں جو ہم نے پہلے 'دستاویزات' ڈائرکٹری میں بنائی تھی۔

پہلا قدم ضروری ہیڈر داخل کرنا ہے۔ مین () فنکشن کے اندر، فائل کو اوپن() فنکشن کے ساتھ کھولیں۔ ایسا کرنے کے لیے، ہمیں 'fd' انٹیجر کا اعلان کرنے کی ضرورت ہے جو فائل ڈسکرپٹر کے طور پر کام کرتا ہے، اور 1024-کریکٹر 'بف' بفر اری جس میں وہ متن ہے جسے ہم فائل میں لکھنا چاہتے ہیں۔ اس بفر میں، ہم GCC مین پیج کے پہلے پیراگراف کو 'example.txt' فائل میں لکھنے کے لیے اسٹور کرتے ہیں۔

اوپن() فنکشن کے ساتھ فائل کو ریڈ/رائٹ موڈ میں کھولنے کے بعد، ہم رائٹ() فنکشن کو کال کرکے اور 'fd' فائل ڈسکرپٹر کو پہلے ان پٹ آرگومنٹ کے طور پر پاس کر کے فائل کو لکھتے ہیں، دوسرے کے طور پر 'بف' پوائنٹر argument، اور اسٹرنگ کا سائز جو صف میں تیسرے دلیل کے طور پر موجود ہے، جو ہم strlen() فنکشن کے ساتھ حاصل کرتے ہیں۔ اس مثال کا کوڈ یہ ہے:

# شامل کریں

# شامل کریں

#include

#include

#include

#include

#include

باطل مرکزی ( )

{

int fd ;

چار بفر [ 1024 ] = 'جب آپ GCC کو استعمال کرتے ہیں، تو یہ عام طور پر پری پروسیسنگ، کمپائلیشن، اسمبلی اور لنکنگ کرتا ہے۔ مجموعی اختیارات آپ کو اس عمل کو درمیانی مرحلے پر روکنے کی اجازت دیتے ہیں۔ مثال کے طور پر، -c آپشن کہتا ہے کہ لنکر کو نہ چلائیں۔ پھر آؤٹ پٹ پر مشتمل ہوتا ہے۔ اسمبلر کے ذریعہ آبجیکٹ فائلوں کی آؤٹ پٹ۔' ;

fd = کھلا ( 'Documents/example.txt' , O_RDWR ) ;

لکھنا ( fd , اور بفر , strlen ( بفر ) ) ;

بند کریں ( fd ) ;

}

درج ذیل تصویر میں، ہم اس کوڈ کی تالیف اور اس پر عمل درآمد کو کھولی ہوئی فائل کے ساتھ دیکھتے ہیں جو رائٹ() فنکشن کے ذریعے لکھی گئی ہے۔

سی لینگویج میں رائٹ () فنکشن کے ساتھ فائل کے آخر میں ٹیکسٹ کیسے شامل کیا جائے

جب کوئی فائل O_WRONLY یا O_RDWR جھنڈوں کو بتا کر کھولی جاتی ہے، تو کرسر پہلی پوزیشن پر آ جاتا ہے اور وہاں سے لکھنا شروع کر دیتا ہے۔

فائل کے آخر میں ٹیکسٹ شامل کرنے کے لیے، اسے O_WRONLY یا O_RDWR فلیگس اور O_ APPEND فلیگ کے درمیان ایک منطقی یا آپریشن کے ذریعے واضح کیا جانا چاہیے جب فائل کھولی جائے تو open() فنکشن کے ان پٹ فلیگ آرگیومنٹ میں۔ اس طرح فائل کے آخر میں کرسر رکھ دیا جاتا ہے اور وہاں سے لکھنا شروع ہوتا ہے۔ نیز، fcntl() فنکشن کے ساتھ فائل کھولنے کے بعد اوصاف اور تحریری موڈ کو تبدیل کیا جا سکتا ہے۔

مندرجہ ذیل مثال میں، آپ ایک کوڈ دیکھ سکتے ہیں جو فائل کے آخر میں ایک متن کا اضافہ کرتا ہے جسے ہم نے پچھلی مثال میں لکھا تھا:

# شامل کریں

# شامل کریں

#include

#include

#include

#include

#include

باطل مرکزی ( )

{

int fd ;

چار بفر [ 1024 ] = 'یہ متن شامل کیا گیا ہے۔ یہ متن شامل کیا گیا ہے۔' ;

fd = کھلا ( 'Documents/example.txt' , O_RDWR | O_APPEND ) ;

لکھنا ( fd , اور بفر , strlen ( بفر ) ) ;

بند کریں ( fd ) ;

}

مندرجہ ذیل تصویر شامل کردہ متن کو ظاہر کرتی ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، اس افتتاحی طریقہ کے ساتھ، write() فنکشن فائل میں لکھے گئے آخری کردار کی پوزیشن پر لکھنا شروع کرتا ہے:

سی لینگویج میں رائٹ() فنکشن کا استعمال کرتے وقت پیدا ہونے والی خرابیوں کا پتہ لگانے اور ان کی نشاندہی کرنے کا طریقہ

write() کا استعمال مختلف غلطیاں پیدا کر سکتا ہے۔ جب ایسا ہوتا ہے تو، یہ فنکشن ایک نتیجہ دیتا ہے جو -1 کے برابر ہوتا ہے۔

اس بات کا تعین کرنے کا سب سے آسان طریقہ ہے کہ آیا کوئی خرابی واقع ہوئی ہے 'اگر' حالت کا استعمال کرنا ہے جہاں شرط -1 کی واپسی کی قیمت ہے۔ اب، آئیے دیکھتے ہیں کہ آپ اس طریقہ کو کیسے استعمال کر سکتے ہیں اس بات کا تعین کرنے کے لیے کہ آیا کوئی غلطی ہوئی ہے:

int n ;

n = لکھنا ( fd , اور بفر , strlen ( بفر ) ) ;

اگر ( n == - 1 ) {

printf ( 'فائل لکھنے کی کوشش کے دوران ایک خرابی پیش آگئی۔' ) ;

}

اگر رائٹ() فنکشن غلطی کے ساتھ واپس آجاتا ہے، تو یہ 'if' اسٹیٹمنٹ میں منتقل ہوتا ہے اور پیغام کو پرنٹ کرتا ہے، ' فائل لکھنے کی کوشش کے دوران ایک خرابی پیش آگئی '

جب کوئی خرابی واقع ہوتی ہے تو، ایک عددی کوڈ خود بخود errno عالمی متغیر میں محفوظ ہوجاتا ہے جس کی وضاحت 'errno.h' ہیڈر میں ہوتی ہے۔ یہ کوڈ اس غلطی کی نشاندہی کرنے کے لیے استعمال کیا جا سکتا ہے جو پیش آئی ہے۔

ذیل میں ان خامیوں کے ساتھ ایک اقتباس ہے جو write() فنکشن پیدا کر سکتا ہے اور جس کی وضاحت 'errno.h' ہیڈر میں کی گئی ہے، اس کے ساتھ ہر ایک غلطی کی مختصر وضاحت اور متعلقہ عددی قدر:

تعریف غلطی میں قدر خرابی
EAGAIN گیارہ دوبارہ کوشش کریں.
ای بی اے ڈی ایف 9 غلط فائل نمبر۔
EDESTADDRREQ 89 منزل کا پتہ درکار ہے۔
EDQUOT 122 کوٹہ سے تجاوز کر گیا۔
EFAULT 14 غلط پتہ۔
ای ایف بی آئی جی 27 فائل بہت بڑی ہے۔
EINTR 4 سسٹم کال میں خلل پڑا۔
واحد انتخاب 22 غلط دلیل.
ای آئی او 5 I/O غلطی۔
ENOSPC 28 آلے میں کوئی جگہ نہیں بچی.
اوپری 1 آپریشن کی اجازت نہیں ہے۔

غلطی کی نشاندہی کرنے کا سب سے آسان طریقہ ایک سوئچ کھولنا ہے جہاں غلطی متغیر جمپ کنڈیشن ہے اور ہر کیس غلطی کی تعریف ہے۔

اگلا، آئیے ایک مثال پر نظر ڈالیں جہاں ہم منفی نشان کے ساتھ ڈسکرپٹر درج کرنے کی کوشش کرتے ہیں، جس کے نتیجے میں غلطی ہوتی ہے۔ غلطی کی نشاندہی کرنے کے لیے، ہم 'اگر' حالت کا استعمال کرتے ہیں جو ہم نے پچھلے ٹکڑوں میں دیکھی تھی۔ اس کی شناخت کرنے کے لیے، ہم تین سب سے عام غلطیوں کے ساتھ ایک سوئچ کھولتے ہیں جو یہ فنکشن پیدا کر سکتا ہے۔

# شامل کریں

#include

#include

#include

#include

#include

#شامل کریں

باطل مرکزی ( )

{

int fd ;

int n ;

چار بفر [ 1024 ] = 'ہیلو ورلڈ' ;

fd = کھلا ( 'Documents/example.txt' , O_RDWR ) ;

n = لکھنا ( - 2 , اور بفر , strlen ( بفر ) ) ;

اگر ( n == - 1 ) {

سوئچ ( غلطی ) {

معاملہ ای بی اے ڈی ایف : {

printf ( 'خراب فائل نمبر۔ خرابی: %i \n ' , غلطی ) ;

توڑنا ; }

معاملہ واحد انتخاب : {

printf ( 'غلط دلیل۔ خرابی: %i \n ' , غلطی ) ;

توڑنا ; }

معاملہ ای آئی او : {

printf ( 'I/O غلطی۔ خرابی: %i \n ' , غلطی ) ;

توڑنا ; }

}

}

}

جیسا کہ ہم مندرجہ ذیل تصویر میں دیکھ سکتے ہیں، رائٹ() فنکشن ایک غلطی واپس کرتا ہے جب ایک غلط ڈسکرپٹر کو ان پٹ آرگومنٹ کے طور پر پاس کیا جاتا ہے۔ errno متغیر سے حاصل ہونے والی قدر کو جمپ کنڈیشن کے طور پر استعمال کیا جاتا ہے جو ہمیں EBADF کیس میں داخل ہونے پر غلطی کی نشاندہی کرنے کی اجازت دیتا ہے۔

نتیجہ

لینکس کے اس اشارے کے مضمون میں، ہم نے آپ کو دکھایا ہے کہ فائلوں کو لکھنے کے لیے write() فنکشن کا استعمال کیسے کریں۔ ہم نے آپ کو اس فنکشن کی نحو اور نظریاتی وضاحت دکھائی۔ ہم نے غلطی کی نشاندہی اور شناخت کے طریقوں کی بھی وضاحت کی ہے تاکہ آپ کے پاس ان مسائل کو فوری طور پر حل کرنے کے لیے ضروری ٹولز اور تکنیک موجود ہوں۔

آپ کو یہ دیکھنے میں مدد کرنے کے لیے کہ write() کیسے کام کرتا ہے، ہم نے اس فنکشن کے استعمال کو کوڈز اور امیجز کے ساتھ عملی مثالوں میں لاگو کیا ہے جو اس اور دیگر فائل پروسیسنگ فنکشنز کے استعمال کو ظاہر کرتے ہیں۔

ہم نے آپ کو یہ بھی دکھایا کہ فائل کے شروع میں یا آخر میں ٹیکسٹ داخل کرنے کے لیے فائل اوپن موڈ کو کیسے منتخب کیا جائے، اور ان خصوصیات کو تبدیل کرنے کے لیے کون سے فنکشن دستیاب ہیں۔