البرمجة

تجنب استخدام دالة gets في C++

الخطأ C4996 في لغة C++ يحدث عندما يتم استخدام دالة أو متغير قد يكون غير آمن في الاستخدام. في حالتك، الخطأ يحدث بسبب استخدام دالة gets، التي تُعتبر غير آمنة للاستخدام. تم تعويض دالة gets بدالة gets_s التي تعتبر أكثر أمانًا، ولكن يمكنك أيضًا تعطيل هذا التحذير عن طريق استخدام _CRT_SECURE_NO_WARNINGS.

لحل هذا الخطأ، يمكنك استبدال استدعاء gets بـgets_s، وهي الوظيفة الآمنة الموصى بها، أو يمكنك تعطيل التحذير عن طريق إضافة #define _CRT_SECURE_NO_WARNINGS في بداية الملف. وإليك كيف يمكن تعديل الكود لحل هذه المشكلة:

cpp
#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int main(int argc, char* argv[]) { char str[80]; cout << "Enter a string: "; cin.getline(str, 80); // استخدام getline بدلاً من gets cout << "You entered: " << str << endl; return 0; }

باستخدام cin.getline بدلاً من gets، يمكنك تجنب هذا الخطأ وضمان أمان تشغيل برنامجك.

المزيد من المعلومات

الخطأ C4996 يشير إلى أن الدالة gets غير آمنة وقد تؤدي إلى ثغرات أمنية، ولذلك تمت إزالتها من المعيار الخاص بلغة C++ الحديثة. بدلاً من gets، يُفضل استخدام دالة gets_s التي تعتبر أكثر أمانًا، حيث تتطلب المزيد من البيانات مثل حجم المصفوفة وعنوان المصفوفة كمعاملات. يمكن تعطيل هذا التحذير عن طريق تعريف _CRT_SECURE_NO_WARNINGS، لكن الأفضل استخدام gets_s أو وظائف أكثر أمانًا مثل cin.getline في C++.

زر الذهاب إلى الأعلى