logo

وظيفة fgets() في C

في برمجة C، التعامل مع مدخل و انتاج الأنشطة ضرورية. فجيتس() هي واحدة من العديد من الوظائف المتاحة ل مدخل . بمساعدة هذه الوظيفة القوية ، قد يقرأ المطورون المعلومات بشكل آمن ودقيق من دفق معين. في هذه المقالة سوف نقوم بدراسة الإضافية و عموميات ل فجيتس () ، تجاوزها بناء الجملة، التطبيق، نموذج التعليمات البرمجية ، و نتائج متوقعة .

ال وظيفة fgets() ، باختصار ل 'ملف الحصول على سلسلة' ، يتم استخدامه بشكل متكرر لقراءة سلسلة من دفق الملف أو الإدخال القياسي (ستدين) . يوفر بديلاً أكثر أمانًا للمنهق يحصل على وظيفة (). ، الذي تم استخدامه سابقًا ولكنه يشكل الآن مصدر قلق أمني. الوظيفة فجيتس () يوفر وسيلة لتقييد عدد الأحرف المقروءة ويتعامل بشكل فعال مع أحرف السطر الجديد.

هل كات تيمبف محامية؟

بناء جملة fgets() كما يلي:

 char *fgets(char *str, int size, FILE *stream); 

وتنقسم المعلمات على النحو التالي:

شارع: إنها إشارة إلى مجموعة الأحرف (السلسلة) التي سيتم استخدامها لتخزين الإدخال.

مقاس: إجمالي عدد الأحرف (بما في ذلك حرف فارغ '0' ) يمكن قراءتها.

تدفق: جهاز التأشير إلى دفق ملف الإدخال أو com.stdin الذي - التي فجيتس () سوف يقرأ من.

من أجل فهم أفضل لكيفية عمل fgets()، دعونا نلقي نظرة على مثال:

مثال:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

انتاج:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

توضيح:

بيانات التعدين

في المثال أعلاه ، نبدأ بدمج ملف الرأس المناسب ، 'stdio.h' . بعد ذلك ، يتم تعريف سلسلة الإدخال على أنها إدخال صفيف الأحرف بحجم 100.

استخدام وظيفة برينتف (). ، يطلب البرنامج من المستخدم إدخال سلسلة. بعد ذلك، com.stdin يستخدم ك تيار الإدخال ، و فجيتس () يتم استخدامه مع الإدخال كسلسلة الوجهة، حجم (الإدخال) والحد الأقصى لحجم القراءة. وبعد ذلك يستخدم البرنامج برينتف () لإخراج السلسلة المدخلة.

فجيتس() يمكن للوظيفة يقرأ و يحفظ حرف السطر الجديد 'ن' إذا ظهر قبل الوصول إلى الحد الأقصى للحجم. يجعل من الممكن معرفة ما إذا كانت خط الإدخال قد تم قراءة بالكامل أو اقتطاع بسبب قيود المساحة.

مثال:

باستخدام مقتطف التعليمات البرمجية المعدل، يمكنك استخدام طريقة strcspn (). ل يمسح ال خط جديد حرف من سلسلة الإدخال:

 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

انتاج:

 Enter a string: Hello World You entered: Hello World 

توضيح:

يتم تحديد طول السلسلة الفرعية المكونة من أحرف غير موجودة في مجموعة الأحرف المتوفرة بواسطة وظيفة ستركسبن (). . في هذه الحالة، حرف فارغ '0' يستخدم لاستبدال حرف السطر الجديد بعد التحديد 'ن' كمجموعة من الأحرف للبحث عنها.

خاتمة:

وفي الختام القراءة سلاسل الإدخال من تدفقات الملفات أو الإدخال القياسي باستخدام C طريقة fgets() يمكن الاعتماد عليها وآمنة. إنها أداة مفيدة لمعالجة إدخال المستخدم بطريقة منظمة لأنها تتيح لك تحديد الحد الأقصى للحجم للإدخال ومعالجة الأحرف الجديدة.

المستنكرة يحصل على وظيفة (). يتم استبداله بأكثر أمانًا وظيفة fgets() ، والذي يعمل على إصلاح العيوب الأمنية الناجمة عن تجاوزات المخزن المؤقت . إنه يتأكد من أن سلسلة الإدخال لا تصبح أكبر من ما هو مسموح به ، وتجنب مشاكل فساد الذاكرة المحتملة.

يوضح رمز المثال المقدم كيفية الاستخدام فجيتس () بشكل صحيح لالتقاط إدخال المستخدم وإزالة حرف الخط الجديد إذا ظهر. إنه يؤكد على مدى أهمية مراعاة قيود الإدخال والتعامل مع أحرف السطر الجديد لضمان معالجة دقيقة للسلسلة.

عمر دارميندرا

يمكن للمطورين تحسين أمن ومتانة برامجهم C مع فجيتس () . يمكنهم تجنب السلوكيات غير المتوقعة والانتهاكات الأمنية المحتملة الناجمة عن المدخلات الكبيرة من خلال تحديد الحد الأقصى لحجم المدخلات.

يجب أن يتعرف المبرمجون C الطموحون فجيتس () وتعليمات استخدامه لضمان التعامل الآمن والفعال مع المدخلات. يمكن للمطورين الذين يدركون هذه الوظيفة إنتاج برامج أكثر موثوقية وأمانًا تحمي من الثغرات الأمنية المتعلقة بالإدخال والتي يتم مواجهتها بشكل متكرر.