الخطأ 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++.