الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب مساعدة من يشرح لي هذا الكود ثم مالخطا فيه

بدأه youssefchou في 6 أغسطس 2008 · 11 رد · 1,030 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

من يشرح لي اخواني هذا الكود

كيف يتسبب بثغرة فيض في البرنامج ؟

لماذا عندما احاول تنفيده يضهر اخطاء,,هل نسيت ضم مكتبة اخرى ؟

وشكرا جزيلا لكم على جهوذكم في نشر العلم

#include <StdAfx.h>
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>


int main()
{
char buf[84];
	 getchar();

if (argc > 1)
 {
 cout << "argument :" << argv[1] << endl;
 strcpy(buf, argv[1]);
 }
 return 0;
}

الخطا الذي يضهر هو عدم وجود مكتبة StdAfx.h

1 c:\docume~1\nour\desktop\buf3.cpp
 StdAfx.h: No such file or directory

وانا متاكد من انها موجودة في المكتب

#2

السلام عليكم

  1.  
  2. #include <iostream.h> //cout
  3. #include <string.h> //strcpy
  4. int main(int argc,char* argv[])
  5. {
  6. char buf[84];
  7. if (argc > 1)
  8. {
  9. cout << "argument0 :" << argv[0] << endl;
  10. cout << "argument1 :" << argv[1] << endl;
  11. cout << "argument2 :" << argv[2] << endl;
  12. strcpy(buf, argv[1]);cout <<"buf :"<<buf<<endl;
  13. }
  14. return 0;
  15. }
  16.  
  17.  

في السطر رقم 4 عرفنا الدالة الرئسية واضفنا لها بارمترين من أجل اخذ القيم من سطر الأومر

الاول يعيد رقم وهو عدد النصوص المتصله المدخله

والثاني مصفوفة تخزن فيها النصوص

مثلا اذا كان اسم برنامجك do.exe

اذا كتبت من الدوس الشكل التالي

do wert tyurj jkiouy

argc=3 ;

argv[0]=do

argv[1]=wert

argv[2]=tyurj

وهكذا

السطر 12 ينسخ القيمة من المدخل رقم واحد الى المتغير buf

ملاحظه لن يظهر لك شئ عن تصريف البرنامج لان البرنامج معمول فقط من اجل أظهار مخرجات سطر الاومر.

ستجد برنامجك بعد تصريفه في المجلد المخصص حسب كمبايلرك.

tvquran_6.gif

#3

السلام عليكم اخي

لا اعلم كيف اعبر لك عن شكري وامتناني لك

جزاك الله خيرا

ولكن مايجعلني اتعجب هو ان الكود الاول يعمل مع واحد اخر

لاني نقلت الكود حرفيا من عضو

على العموم شكراااااااا

#4
اقتباس
ولكن مايجعلني اتعجب هو ان الكود الاول يعمل مع واحد اخر

البرنامج منشئ بفجول سي ما يكروسوفت ولذلك مضاف اليه المكتبه #include <StdAfx.h>

tvquran_6.gif

#5

السلام عليكم

انا من اضاف اليه هذه المكتبة لاني اعمل بالمترجم المذكور

ولكن صاحبه الاصلي يعمل بمترجم dev cpp

المهم شكرا على حسن المساعدة

#6

وهذا هو الكود الذي كتبه هو

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>


int main()
{
char buf[84];
	 getchar();

if (argc > 1)
 {
 cout << "argument :" << argv[1] << endl;
 strcpy(buf, argv[1]);
 }
 return 0;
}
#7

وهل نجح الكود معك واشتغل؟

ماهو اصدارة الكمبالير لديك هل هو 4.

tvquran_6.gif

#8

السلام عليكم

dev cpp 4 انا استعملت نفس الكمبايلر الذي يستعمله

get-8-2008-zno6trnfus0.JPG

والكود لم يعمل معي هذه هي الاخطاء

9 c:\docume~1\nour\desktop\buf3.cpp `argc' undeclared (first use this function)
9 c:\docume~1\nour\desktop\buf3.cpp (Each undeclared identifier is reported only once
9 c:\docume~1\nour\desktop\buf3.cpp for each function it appears in.)
11 c:\docume~1\nour\desktop\buf3.cpp `argv' undeclared (first use this function)

وهذه صورة من الفيديوا الذي نقلته منه

post-153853-1218024236_thumb.jpg

شكراااا

#9

لم تكتب الكود الذي في المشاركة هناك البارمترات التي في الدالة الرئسية لم تكتبها

tvquran_6.gif

#10
فهدالشلوي كتب:
لم تكتب الكود الذي في المشاركة هناك البارمترات التي في الدالة الرئسية لم تكتبها

نعم اخي الكود الذي كتبته انت يعمل

فقط انا اتحدث عن الكود الموجود في الصورة "صورة الفيديو"

فهو يعمل عنده اما انا فلا

والسؤال هو لماذا يعمل عنده ولا يعمل معي

اتمنى ان تكون قد فهمت ردي

#11
هناك البارمترات التي في الدالة الرئسية لم تكتبها

int main(int argc,char* argv[])

اذا لم يكتب السطر السابق لا اعتقد ان يعمل لديه

tvquran_6.gif

#12
فهدالشلوي كتب:
هناك البارمترات التي في الدالة الرئسية لم تكتبها

int main(int argc,char* argv[])

اذا لم يكتب السطر السابق لا اعتقد ان يعمل لديه

السلام عليكم الان الكود كامل

شكرا على تتبعك الموضوع

دمت في امان الله

كثر الله من امثالك

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…