الشبكة العربية لمطوري الألعاب

محترف مشرف عبد اللطيف حاجي علي مشاركة 1

(يبدو أنني الوحيد في هذا المنتدى)

السلام عليكم

ما الخطأ في الـ Code التالي:
for (int i=0;i<200;i++)
{
	char szBuffer[MAX_PATH] = "Something Wrong-%d";
	sprintf(szBuffer, szBuffer, i);
}


هذا الـ Code يعمل بشكل ممتاز حتى رقم 99 ثم عند الـ 100 يبدأ بإطلاق الـ Exceptions كالرصاص, و لم أستطع معرفة السبب

فهل يمكن لأحد مساعدتي؟

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير  Mohammad Khashashneh مشاركة 2

Wa Alikom Alsalam.

No you are not alone☺

Ok, The problem is with your buffer . You need to specify exactly how much characters your going to insert later. just 2 before %dto be like this:
char szBuffer[MAX_PATH] = "Something Wrong-%2d";

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 3

معلوماتي العجوز تخبرني أن sprintf() غير مجهز للحالة التي يكون باراماتري الدخل والخرج يؤشران لنفس المصفوفة... بمعنى آخر، حاول الإعلان عن مصفوفة أخرى واستخدمها مرة للدخل ومرة للخرج (ping pong) مع المصفوفة الأصلية...
كما أنه حبذا لو تتأكد من أن المصفوفة ستتسع للـ string كله في النهاية...

---
وسام البهنسي

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  احمد صالح مشاركة 4

بالنسبة للبرنامج

همم ... هناك خطأ عند إضافة الكود و جربت جميع المحاولات لو افلح

خبير مدير وسام البهنسي مشاركة 5

ما هو الخطأ؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  احمد صالح مشاركة 6

انا اقصد عند إضافة الكود للمنتدي تظهر لي صفحة خطآ في قاعدة البيانات

خبير مدير وسام البهنسي مشاركة 7

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

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

  ahmed Samieh مشاركة 8

السلام عليكم ورحمة الله وبركاته...

  for(int i=0; i<200 ; i++) {
    char szBuffer[] = "Something Wrong-%3d";
    sprintf(szBuffer, szBuffer, i);
  }

هذا يعمل بشكل جيد
-------------------

لماذا يوجد أغبياء؟
ليحولوا حياة العباقرة الى جحيم

محترف مشرف عبد اللطيف حاجي علي مشاركة 9

التعليق على مشاركة ahmed Samieh في Jan 3, 2006 18:12 :

> السلام عليكم ورحمة الله وبركاته...
>
>
> 
>   for(int 
> i=0; i<200 ; i++) {
>     char szBuffer[] = "Something 
> Wrong-%3d";
>     sprintf(szBuffer, szBuffer, i);
>   }
> 
> 

> هذا
> يعمل بشكل جيد
> -------------------
> لماذا يوجد أغبياء؟
> ليحولوا
> حياة العباقرة الى جحيم
>
ولكن لو أتك وضعت 2000 بدل الـ 200 فإن الخطأ سيظهر حتى لو وضعت %9d...



--------
لماذا يوجد أغبياء؟
لكي يوجد عباقرة!!!!

عبد اللطيف حاجي علي
مبرمج
In|Framez