البرمجة

تعديل قيمة 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'.

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

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

المحتوى محمي من النسخ !!