يحصل هي وظيفة في لغة البرمجة ج التي تسمح لك لقراءة سلسلة من الأحرف من المدخلات القياسية. ومع ذلك ، يمكن أن يؤدي استخدامه إلى مشاكل أمنية خطيرة ، لأنه لا يتحقق من حجم بيانات الإدخال ويمكن أن يؤدي إلى تجاوز سعة المخزن المؤقت. ولذلك ، فمن المستحسن استخدام وظائف قراءة سلسلة أخرى ، مثل فجيتس ، والتي تسمح لك لتحديد الحد الأقصى لطول سلسلة الإدخال ومنع تجاوز سعة المخزن المؤقت.
تعريف وظيفة يحصل يبدو مثل هذا:
شار * يحصل (شار * ق);
تقبل وظيفة جيتس مؤشر إلى مجموعة من الأحرف التي سيتم كتابة سلسلة الإدخال. يقرأ الأحرف من الإدخال القياسي حتى يواجه حرف سطر جديد أو يصل إلى نهاية الملف ، ويخزنها في المصفوفة المحددة. ثم تقوم الدالة بإرجاع مؤشر إلى هذا الصفيف.
ومع ذلك ، فإن استخدام وظيفة جيتس يعتبر غير آمن لأنه ليس لديه القدرة على تحديد الحد الأقصى لطول سلسلة الإدخال ولا يتحقق من حجمها. يمكن أن يؤدي هذا إلى تجاوز سعة المخزن المؤقت ، مما قد يؤدي إلى مشاكل أمنية خطيرة ويؤدي إلى خطأ في تنفيذ البرنامج.
- ما هو معرف يحصل في ج وكيفية تعريفه بشكل صحيح?
- معلومات عامة حول معرف يحصل
- كيفية تحديد واستخدام معرف يحصل في ج
- نقاط مهمة عند استخدام معرف يحصل
ما هو معرف يحصل في ج وكيفية تعريفه بشكل صحيح?
معرف يحصل في لغة البرمجة ج هي وظيفة لقراءة سلسلة من لوحة المفاتيح. ومع ذلك ، لا يوصى باستخدام هذه الميزة ، نظرا لوجود مشكلات أمنية معينة.
وظيفة جيتس قديمة وغير آمنة لأنها لا تحد من طول سلسلة الإدخال ويمكن أن تؤدي إلى تجاوز سعة المخزن المؤقت. هذا يمكن أن يؤدي إلى مشاكل أمنية خطيرة ، بما في ذلك إمكانية تنفيذ التعليمات البرمجية الضارة.
بدلا من استخدام جيتس ، فمن المستحسن استخدام وظيفة فجيتس ، الذي يوفر وسيلة أكثر أمنا لقراءة سلسلة من تيار الإدخال. وظيفة فجيتس يسمح لك لتحديد الحد الأقصى لعدد الأحرف التي يمكن قراءتها ، وبالتالي يمنع تجاوز سعة المخزن المؤقت.
| وظيفة | الوصف |
|---|---|
| يحصل | عفا عليها الزمن ، ليست آمنة |
| فجيتس | طريقة آمنة لقراءة سلسلة من دفق الإدخال |
وفيما يلي مثال على التعريف الصحيح واستخدام وظيفة فجيتس:
- تحديد مخزن مؤقت لقراءة السلسلة:
- شار العازلة [ماكس لين];
# تعريف ماكس لين 100استخدام وظيفة فجيتس لقراءة السلسلة:فجيتس (العازلة ، سيزوف (العازلة) ، ستدين);
لاحظ أن وظيفة فجيتس يقرأ السلسلة جنبا إلى جنب مع حرف السطر الجديد (
) ، لذلك تحتاج إلى حذفه إذا لم يكن مطلوبا للتطبيق الخاص بك:سيز_ت لين = سترلين (العازلة);
إذا (لين > 0 & & العازلة [لين-1]=='
') {
المخزن المؤقت [لين-1] =' \ 0';
}
ونتيجة لذلك ، فإن استخدام وظيفة فجيتس الآمنة بدلا من وظيفة جيتس الموقوفة يوفر قراءة أكثر أمانا وموثوقية لسلسلة من دفق الإدخال في لغة البرمجة سي.
معلومات عامة حول معرف يحصلالمعرف جيتس هو وظيفة في لغة البرمجة ج التي تستخدم لقراءة سلسلة من الأحرف (سلاسل) من تيار الإدخال القياسية (عادة لوحة المفاتيح). وظيفة يحصل هي واحدة من الوظائف القديمة في اللغة ج وقدم في الطبعة الأولى من معيار أنسي ج.
ومع ذلك ، لم يعد من المستحسن استخدام معرف يحصل في التعليمات البرمجية الجديدة بسبب انعدام الأمن. لا تتحقق الوظيفة من حجم المخزن المؤقت ويمكن أن تؤدي إلى تجاوز سعة المخزن المؤقت ، مما قد يؤدي إلى ثغرات أمنية في التطبيق.بدلا من استخدام وظيفة جيتس ، فمن المستحسن استخدام وظيفة فجيتس ، التي لديها نفس القدرات ولكن يوفر وسيلة أكثر أمانا لقراءة السلاسل. لا تقرأ وظيفة فجيتس أكثر من العدد المحدد من الأحرف من الدفق وتحد تلقائيا من حجم المخزن المؤقت. يجب أن يكون حجم المخزن المؤقت كافيا لاستيعاب الحد الأقصى للسلسلة المتوقعة بالإضافة إلى حرف واحد لحرف السطر الجديد.
مثال على استخدام وظيفة جيتس:
# تشمل
كثافة العمليات الرئيسية () {
شارع شار [100];
- برينتف ("أدخل السلسلة:");
- يحصل (شارع);
- برينتف ("لقد دخلت: ٪ ق
"،شارع);
العودة 0;
}
- كما ذكر أعلاه ، فإن وظيفة جيتس ليست آمنة ، لذلك فمن المستحسن استخدام وظيفة فجيتس لقراءة السلاسل:
# تشمل
كثافة العمليات الرئيسية () {
شارع شار [100];
برينتف ("أدخل السلسلة:");
- فجيتس (ستر ، سيزوف (ستر) ، ستدين);
- برينتف ("لقد دخلت: ٪ ق
- "،شارع);
العودة 0;
}
وظيفة فجيتس يقرأ ما لا يزيد عن سيزوف (ستر) -1 حرفا من تيار ستدين ويخزنها في صفيف ستر. إذا كانت السلسلة طويلة جدا ، فستقرأها في أجزاء ، مما يعني أن الأحرف التي تتم قراءتها قد تكون أقل من الرقم المطلوب.
بشكل عام ، لقراءة آمنة من السلاسل في لغة البرمجة ج ، فمن غير المستحسن استخدام وظيفة جيتس وينبغي إعطاء الأفضلية لوظيفة جيتس أو وظائف بديلة أخرى.