تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة شباب في لغة السي ++
#1
السلام عليكم ورحمة الله 
اخوان انا بصدد كتابة برنامج صغير مع اني مبتدء في المجال (: 
المهم 

سؤالي هو مهو الكود لمستعمل الذي اذا استعملته ينقل بايت او بايتين الي متغير معا 
في بداي الحلقة وايل كايف انقل بايت او حرف الي متغير ما لاعمل عليه بعض العمليات المنطقية 
فمثلا هذا الكود من الأولي Olyy 

[صورة مرفقة: 692435830.png]

ارجو ان يكون استفساري واضح 
[ ربنا اعفر لي ولوالدي وللمؤمنين يوم يقوم الحساب ]
الرد
تم الشكر بواسطة: mribraqdbra
#2
 
 
fonction  strncpy
 strncpy ( char * destination, const char * source, size_t num );
بالسؤال يتعلم الإنسان
الرد
تم الشكر بواسطة: mribraqdbra
#3
لو توضح قليلا اخي بارك الله فيك
[ ربنا اعفر لي ولوالدي وللمؤمنين يوم يقوم الحساب ]
الرد
تم الشكر بواسطة: mribraqdbra
#4
كود :
Output:
str2AT

/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "AT4RE";
char str2[10];
strncpy str2str1);
return 
0;


اتمنى ات يكون واضح أعتذر لأنني متصل عن طريق الهاتف حاليا
بالسؤال يتعلم الإنسان
الرد
تم الشكر بواسطة: mribraqdbra
#5
و عليكم السلام و رحمة الله تعالى و بركاته
من الأفضل اعتماد المؤشرات pointers و التمرن عليها...
 
كود :
#include <windows.h>

int main() {
    char  *EAX = (char *)malloc(6);
    memset(EAX06);
    strcpy(EAX"AT4RE");

   int ECX 0;

    do {
        EAX ECX EAX;
        *EAX = *EAX 0x89ABCDE;
        *(byte *)EAX = *(byte *)EAX 0xE;

        ECX ECX 0x4;
    } while(ECX 8);

    return 0;


محاكاة عمل اوامر الأسمبلي التي في الصورة فوق...
الرد
تم الشكر بواسطة: peanuts27 , mribraqdbra
#6
scriptkiddie

اعتقد من السيء استخدام هذه الاسماء في المتغيرات .. هذه اسماء رجسترات في البروسسر بينما يتم تخزينها في الرام الاسم في رايي يعطي مفهوم خاطئ للجدد..

عندك memory leak

free (eax)

======

ايضا هذه مخرجات الكود
https://onlinegdb.com/Hk-A5ILnE
الرد
تم الشكر بواسطة:
#7
هذا افضل اوضحت فيه ما يحدث في الكود المكتوب:

https://onlinegdb.com/S19QLvI3N
الرد
تم الشكر بواسطة:
#8
(13-05-2019, 02:22 AM)hsn93 كتب : اعتقد من السيء استخدام هذه الاسماء في المتغيرات .. هذه اسماء رجسترات في البروسسر بينما يتم تخزينها في الرام الاسم في رايي يعطي مفهوم خاطئ للجدد..
بالعكس استعمال اسماء المتغيرات (اسماء السجلات) التي تعكس حقيقة ما يتم محاكاته (اوامر الأسمبلي الصورة فوق) يتيح فهم مراحل التنفيذ و السجلات التي يتم اعتمادها في المحاكاة...
 
(13-05-2019, 02:22 AM)hsn93 كتب : عندك memory leak

في حالة هذا المثال (فقط) تحرير الذاكرة المحجوزة غير اجباري لان التطبيق ينفذ الأوامر و بعدها يغلق (لا يقوم بتنفيذ اوامر اخرى اضافية)، و مع غلقه يقوم النظام بتحرير ما تم حجزه (داخل حيز العملية)

طبعا، هذا لا يمنع من اعتماد السلوك البرمجي الصحيح بتحرير ما يتم حجزه من ذاكرة...
الرد
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم