سؤال

أنا جعل أداة سطر الأوامر باستخدام كسكودي 4.

أحصل على خطأ إكسباد_أكسس على الخط مع ستركبي:

char *invalidOption = NULL;
strcpy(invalidOption, argv[2]);

أرجف [1] هو-الخامس (خيار "صالح") و أرجف[2] هو-ض (خيار "غير صالح").

ثم أحتاج إلى تغيير" إنفاليدوبتيون "لأسباب العرض (طباعة رسالة" خطأ").

أي أفكار لماذا يحدث هذا?واسمحوا لي أن أعرف إذا كنت بحاجة إلى أي مزيد من التفاصيل.

هل كانت مفيدة؟

المحلول

strcpy لا تخصص أي ذاكرة لك.أنت تحاول نسخ السلسلة إلى NULL, ، مما يسبب سلوكا غير محدد.أنت بحاجة إلى شيء مثل:

char invalidOption[10];
strcpy(invalidOption, argv[2]);

فقط تأكد من أن invalidOption كبيرة بما يكفي لعقد السلسلة بأكملها (بما في ذلك فاصل فارغة) أو سوف ينتهي بك الأمر مع نفس المشكلة.يمكنك استخدام التخصيص الديناميكي إذا لزم الأمر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top