البرمجة

تعديل قيمة char في الدوال C

لديك خطأ في استخدام عامل الجداء (==) بدلاً من عامل الاستقلال (=) في عبارات تعيين قيم متغير char. بدلاً من *cap == 'X'; و *cap == 'O'; يجب أن تكون العبارات *cap = 'X'; و *cap = 'O'; على التوالي.

التعديل الصحيح للدالة يبدو كما يلي:

c
void takeTurn(int *iap, int *tile, char *cap) { //*iap is 1 right now printf("\nThe current active player is %d. His character is %c", *iap, *cap); //prints The current active player is 1. His character is q. if (*iap == 1) *cap = 'X'; if (*iap == 2) *cap = 'O'; printf("\nThe current active player is %d. His character is %c", *iap, *cap); //prints The current active player is 1. His character is X. . . . }

بهذه الطريقة، سيتم تعيين قيمة المتغير char المشار إليه بواسطة *cap بشكل صحيح وفقًا للاعب النشط الحالي.

المزيد من المعلومات

الخطأ الذي قمت بتحديده في استخدام == بدلاً من = هو خطأ شائع في لغات البرمجة مثل C و C++. في الحقيقة، يتم استخدام == للمقارنة بين القيم، بينما يتم استخدام = للتعيين.

عندما تستخدم *cap == 'X';، فإنك تحاول المقارنة بين قيمة المؤشر *cap والقيمة 'X'، وليس تعيين قيمة 'X' للمؤشر *cap. وبما أن قيمة المؤشر *cap لا تتغير، فإن الشرط *cap == 'X' سيعود دائمًا بقيمة خاطئة، ولن تتم عملية التعيين.

على العكس، عند استخدام *cap = 'X';، يتم تعيين قيمة 'X' مباشرة إلى المؤشر *cap، مما يعني أن قيمة المؤشر تتغير بالفعل وتصبح 'X'.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!