Menu
CoddyTech

الوصول إلى أعضاء الـ Struct

جزء من قسم المنطق وتدفق التنفيذ في رحلة C على Coddy. الدرس 41 من 63.

والآن بعد أن أصبحت قادرًا على إنشاء متغيرات البنية، عليك أن تتعلم كيفية التعامل مع البيانات المخزنة بداخلها. يُعد عامل النقطة (.) مفتاحك للوصول إلى الأعضاء الفرديين لمتغير البنية وتعديلهم.

صياغة الوصول إلى أعضاء البنية مباشرة:

structVariable.memberName

باستخدام مثال البنية Point لدينا، يمكنك قراءة أعضائها وتعديلها:

struct Point p1;

// الكتابة في أعضاء البنية
p1.x = 10;
p1.y = 20;

// القراءة من أعضاء البنية
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

يعمل عامل النقطة تمامًا مثل الوصول إلى أي متغير آخر؛ يمكنك استخدامه في عمليات الإسناد والعمليات الحسابية واستدعاءات الدوال، أو في أي موضع تستخدم فيه متغيرًا عاديًا من ذلك النوع. يتصرف كل عضو كمتغير مستقل من نوعه المُعلن، ما يتيح لك معالجة بيانات البنية بطريقة منظمة وبديهية.

challenge icon

التحدي

سهل

أنشئ برنامجًا بلغة C يوضّح كيفية الوصول إلى أعضاء البنية وتعديلها باستخدام عامل النقطة. يجب أن يقوم برنامجك بما يلي:

  1. عرّف بنية struct باسم Car تضم الأعضاء التالية:
      year لتخزين سنة التصنيع
    • مصفوفة محارف brand بحجم 20 لتخزين ماركة السيارة
    • عدد صحيح mileage لتخزين المسافة المقطوعة الحالية
    • عدد عشري price لتخزين سعر السيارة
  2. أنشئ متغيرًا من النوع Car باسم myCar
  3. اقرأ قيم الإدخال التالية وأسندها إلى أعضاء البنية باستخدام عامل النقطة:
      myCar.year
    • اقرأ سلسلة نصية للماركة وانسخها إلى myCar.brand باستخدام strcpy() (لا يمكن إسناد قيمة إلى مصفوفة باستخدام =)
    • اقرأ عددًا صحيحًا للمسافة المقطوعة وأسنده إلى myCar.mileage
    • اقرأ عددًا عشريًا للسعر وأسنده إلى myCar.price
  4. بعد قراءة كل القيم، نفّذ العمليات التالية:
      myCar.mileage += 1000; myCar.price -= 500.0;
  5. اطبع معلومات السيارة باستخدام عامل النقطة للوصول إلى كل عضو، واتبّع هذا التنسيق بالضبط:
    • Car Details:
    • Year: [year]
    • Brand: [brand]
    • Mileage: [mileage]
    • Price: [price]

يختبر هذا التحدي مدى فهمك لعامل النقطة عند القراءة من أعضاء البنية والكتابة إليها. ستتدرّب على إسناد القيم إلى أعضاء البنية، وإجراء العمليات الحسابية عليها، والوصول إليها لإخراجها.

على سبيل المثال، إذا كان الإدخال:

2020
Toyota
50000
25000.50

فيجب أن يكون الإخراج:

Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50

جرّب بنفسك

#include <stdio.h>
#include <string.h>

// TODO: عرّف بنية Car هنا

int main() {
    // TODO: أنشئ متغيرًا من نوع Car باسم myCar
    
    // اقرأ قيم الإدخال
    int year;
    char brand[20];
    int mileage;
    float price;
    
    scanf("%d", &year);
    scanf("%s", brand);
    scanf("%d", &mileage);
    scanf("%f", &price);
    
    // TODO: أسند قيم الإدخال إلى أعضاء البنية باستخدام عامل النقطة
    
    // TODO: عدّل عدد الأميال والسعر كما هو محدد
    
    // TODO: اطبع تفاصيل السيارة باستخدام عامل النقطة
    printf("Car Details:\n");
    // اطبع Year وBrand وMileage وPrice هنا
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C عبر الإنترنت