أهلا ومرحبا بكم مرة أخرى. أود تقديم عرض توضيحي حلاً
لتحدينا السابق الذي يتعلق بفهم مصفوفات الشخصية.
بشكل أساسي ، سنقوم بكتابة وظائف للحصول على طول سلسلة ،
ودالة لسلسلة سلسلة ودالة للتحقق مما إذا كان هناك
سلسلتان متساويتان.
لذلك سأقوم بإنشاء مشروع. سأقوم فقط بتسميته
فهم سلاسل الأحرف.
وأول شيء سنفعله هو تنفيذ دالة الطول هذه.
سنقوم بإنشاء ثلاثة إعلانات
دالة في الأعلى.
سنقوم بتسمية أول طول سلسلة واحدة.
سنستخدم حالة الجمل لتسميتنا.
سيأخذ هذا فقط سلسلة أحرف ثابتة.
إذن كيف نعرف أنها سلسلة لأنها مصفوفة محارف ومن
ثم سنضع فاصلة منقوطة. سيكون هذا هو أول واحد يتم إنشاؤه ، لذلك سنتوقف
عند هذا الحد الآن.
وسننشئ هذه الوظيفة ، ونحددها
بالأسفل لذا يجب أن
تفهم هذه الكلمة المفتاحية اللطيفة const.
يعني Const أنه سلسلة أحرف لا يمكن تغييرها ، ولا يمكن تعديلها.
سبب استخدامنا لـ const هنا هو أننا لا
نريد تعديل السلسلة داخل الدالة ، بل نريد فقط تحليلها
بشكل أساسي ثم إعادة الطول ، وإرجاع عدد صحيح.
هذه الوظيفة في الواقع سهلة التنفيذ لأننا نمر عبر مصفوفة.
إذن يمكننا القول في العد يساوي
صفرًا. هذا متغير محلي.
يمكن استخدامه فقط داخل هذه الوظيفة.
الآن يمكنك أن تسأل نفسك لماذا لا يمكننا استخدام حجم المشغل
لأن حجم المشغل سيخبرنا بحجم السلسلة ، ولن يخبرنا بعدد الأحرف
الموجودة داخل تلك السلسلة.
لكن كل ما نحتاج إلى فعله هو إنشاء حلقة
ومتابعة المصفوفة حتى نصل إلى النقطة الصفرية.
لذا يمكننا النظر إلى الخيط. يمكننا أن نقول ، يا
إلهي ، أن عدد السلاسل لا يساوي حرف النهاية الصفري
، يتم تمثيل حرف النهاية الصفري داخل حرف واحد
كخط مائل عكسي صفر.
ويمكننا استخدام عامل التشغيل لا يساوي لأننا نقارن بالأحرف.
ولدينا شيء واحد فقط في جسم هذا بينما العبارة زائد العد
، فقط زيادة العد.
وبعد ذلك نريد إعادته ، نقول فقط عدد مرات العودة وهذا كل شيء.
هذه هي دالة طول السلسلة بأكملها. إنه سهل جدًا لأن سلسلة الأحرف
موجودة داخل مصفوفة وتنتهي السلسلة
بنهاية فارغة.
لذا لاختبار هذا ، يمكننا البدء
وبدء طريقتنا الرئيسية ويمكننا
إنشاء بعض الأحرف الثابتة
، فقط قل الكلمة الأولى Jason.
هذه هي الطريقة التي تنشئ بها مصفوفة الأحرف في c.
لا يجب أن يكون لديك الثابت هناك ، لكن هذا لا يتم تعديله.
استخدم الكلمة الأساسية char ، ونوع البيانات char ، والمعرف ، ثم الأقواس.
من الأفضل عدم تحديد الحجم داخل الأقواس لأن المترجم
c سيضيف تلقائيًا حرف نهاية فارغ.
وبعد ذلك مباشرة بعد عامل التخصيص
، تضع سلسلة حرفية داخل علامتي اقتباس مزدوجتين.
سننشئ زوجين هنا للتأكد من أنه يعمل.
يمكننا عرض سلاسل الأحرف بسهولة شديدة لأنه يمكننا فقط استخدام رمز النسبة
المئوية ، باستثناء ما نريد حقًا عرضه هنا هو الأطوال.
لذلك
سنستخدم النسبة المئوية d.
لذلك سنقوم فقط بطباعة روابط هذه السلاسل
الثلاثة ، النسبة المئوية d وسيكون لدينا بعض المسافات بينهما
ثم نضيف تغذية سطر.
وهذا سيستدعي فقط دالة طول السلسلة لكل كلمة
، بسيطة جدًا هنا
، وهذا كل شيء. الآن يمكننا البناء والاختبار ومعرفة ما إذا كان هذا يعمل بالفعل.
ما يجب أن نراه كناتج هو أننا يجب
أن نرى طول Jason وهو 5 وطول OK وهو 2 وطول أي
شيء يبدو أنه حوالي 8.
لدينا هنا 5 و 2 و 8 ، والتي تبدو صحيحة.
هذه هي الطريقة التي يمكنك بها كتابة طول السلسلة. دعنا ننتقل إلى وظيفة التسلسل.
ستأخذ وظيفة التسلسل
ثلاث سلاسل ثابتين.
وهذا لن يعيد أي شيء. ستقوم فقط بوضع السلسلة
الناتجة في المعلمة الأولى.
لذلك سنسميها concat. سنحصل على نتيجة ، وسيكون
لدينا سلسلتان ، واحدة نريد
أن نجمع اثنين منها ثم الأخرى نريد أن يكون لدينا سلسلة
واحدة فقط. لذلك سنسمي السلسلة الأولى ، السلسلة الثانية.
وها نحن ذا. وهذا هو إعلان الدالة.
لذا يمكننا استخدام أي مكان قبل تعريفه.
هذا يجب أن يمر عبر المصفوفة أيضًا. سيتعين عليها فقط المرور عبر مصفوفتين
ومع مرور الوقت من خلال كل إضافة إلى السلسلة الناتجة.
سنقوم بإنشاء متغيرين محليين ، لا يمكننا استخدامهما إلا داخل
هذه الدالة ، int I و j.
ثم سنستخدم حلقة for لتصفح
المصفوفة. سنقول لأني يساوي 0.
يجب أن أقول إن Str sub 1 أو sub لا يساوي
الفاصل الصفري ثم الزيادة
أيضًا.
نحن على دراية بتركيب حلقة
for حيث لدينا معرف الحلقة كأول شيء.
قبل الفاصلة المنقوطة الأولى ، الحالة التي نقفز فيها قبل الفاصلة
المنقوطة الثانية ثم نعدل متغير
التحكم في الحلقة للتأكد من عدم وجود حلقة لا نهائية.
كل ما نفعله هنا هو حفظ النتائج ، الفرعي
I يساوي str واحدًا فرعيًا I.
تذكر ، هذه أحرف لذا من الجيد تمامًا استخدام واجب يساوي هنا.
لا يمكننا القيام بذلك في مصفوفات
الأحرف لأن مصفوفات الأحرف لا يمكنك تعيين مصفوفة لمصفوفة.
سيتعين علينا استخدام نسخة str.
هذا هو نسخ السلسلة الأولى.
والآن نريد أن نربط السلسلة الثانية بالنتائج
، لذا سنفعل شيئًا مشابهًا جدًا باستثناء أننا سنبحث في المصفوفة
الثانية وسنتأكد من وضعها في المكان الصحيح في النتيجة.
لذلك سنفعل شيئًا كهذا. سننتقل من j إلى صفر
، و str إلى j لا تساوي حرف النهاية الصفري ++ j.
وستلاحظ أن النتيجة هي قول I plus j فقط ، لذا مهما انتهيت منه.
إذا أضفت عشرة أحرف ، فسيبدأ الآن
من ذلك الحرف العاشر لأنه قائم على الصفر ، وسيضيف
j إليه فقط ، أي 10 زائد 0 ، و 10 زائد 1 وهكذا دواليك.
وهذا كل شيء.
آخر شيء عليك القيام به وهو أمر مهم حقًا هو إضافة هذا الفاصل الفارغ.
لذا نريد أن نقول النتيجة ، أنا زائد j ثم نضيف حرفًا واحدًا
، حرف النهاية الصفري ، وهو الشرطة المائلة
للخلف صفر داخل علامة اقتباس واحدة.
وهذه هي وظيفتنا.
لا يتعين علينا إعادة أي شيء من هذه الوظيفة
لأننا نقوم فقط بالنسخ في str واحد إلى str 2.
لذلك دعونا نختبر هذا.
ما أتوقع أن أكون قادرًا على فعله في هذا هو اختباره بشخصيتين.
سنستخدم الشخصيات الموجودة لدينا ، وسنقوم
فقط بجمع زوجين.
لذلك علينا إنشاء نتيجة أخرى
واحدة. لذلك سنقول
النتيجة فقط لمسحها.
هنا ، سنقول إنه سيتعين علينا
تحديد حجم لهذا الحجم الأول.
لذا سنحدد الحجم 50 فقط. سنقوم بتحديده.
لذلك يجب أن تعمل هذه الأحرف الثابتة.
الآن سنقول printf ،
سنطبع سلسلة.
إذن سنقول النسبة المئوية s ثم نقول concat ، وهو ما
أطلقنا عليه اسم concat. سنقوم بتمرير النتائج ثم
الكلمة الأولى والكلمة الثانية.
إذن ما يجب أن يظهره هذا كمخرج
، وسنتأكد من وضعه في سطرين جديدين.
يجب أن يتم عرض هذا كإخراج جايسون حسنًا. لذلك لا تقوم concat بإرجاع أي بيانات في الواقع ،
لذلك لا يمكنني وضعها مباشرة في الملف printf.
ما علي فعله هو تسميته ثم عرض النتيجة.
لذلك هناك نسمي concat.
يتم وضع كل شيء في النتيجة ونعرض النتيجة.
لذا مرة أخرى عندما نجري هذا ، يجب أن
نرى جايسون بخير ونحن نفعل ذلك.
الوظيفة الثالثة التي
نريد تنفيذها هي وظيفة مقارنة للتحقق مما إذا كانت سلسلتان متساويتين.
يجب أن ترجع هذه الوظيفة قيمة منطقية.
لذلك نريد تضمين منطقتنا القياسية.
لذلك يمكننا استخدام القيم المنطقية والصحيحة والخطأ.
وسيتم تعريف هذا في الواقع على أنه سلاسل متساوية.
سيتطلب هذا مجموعة أحرف ثابتة ، s1 وآخر للتحقق
مما إذا كانت سلسلتان متساويتين.
فقط للتأكد من أنني قمت بتضمين العنوان الصحيح ، سأحاول بناء ذلك
وأعتقد أنني فعلت ذلك لأنني الآن قادر على استخدام الكلمة الأساسية
المنطقية لأنني قمت بتضمينها ويمكنني أيضًا استخدام true false.
لذلك دعونا ننفذ هذه السلاسل المتساوية.
سيكون هذا كثيرًا من نفس الشيء
يمر عبر المصفوفة والتحقق من كل حرف.
لذلك سنقوم بإنشاء متغيرين
محليين I يساوي 0 للحلقة التي تمت تهيئتها بـ 0.
في منطقية ، هذا يخبرنا فقط
إذا كانا متساويين لأن هذا ما سنعود إليه ، شيء مثل يساوي. ويمكننا بالفعل تهيئة هذا على القيمة false.
ما نريد فعله أولًا هو أننا نريد العد.
نريد أن نرى مدى ضخامة كلاهما.
لذلك
يمكننا الحصول على حلقة while لأننا نحتاج إلى العد من أجل النظر
إلى الحجم أساسًا للتحقق فقط من هذا
الإنهاء الفارغ.
لذلك سنفترض أن الأوتار التي نمررها لها نفس الحجم.
حتى نتمكن من كتابة حلقة while. يمكنك كتابة العبارات إذا كان كذلك.
لقد قمت بدمج كل شيء في حلقة while
وهي مقارناتي باستخدام العوامل المنطقية.
ليس عليك استخدام عوامل التشغيل المنطقية. يمكنك استخدام عبارة if وتصفح السلسلة
الثانية بأكملها.
لكن ما فعلته هنا هو أنني قلته بينما
s1 sub I يساوي s2 sub I وهما لا يساويان
نهايات صفرية.
لأنه إذا كانت تساوي نهايات صفرية
، فنحن نريد القفز للخارج إذا كان أحدهما فاصلًا فارغًا.
الآن نقول زائد زائد أنا. ثم آخر شيء يتعين علينا القيام به هو التحقق
مما إذا كانت هذه عوامل إنهاء صفرية. وإذا كان الأمر كذلك ، فيمكنك تعيين المتغير المنطقي
الخاص بك لإرجاع البيانات الصحيحة.
لذلك يمكننا هنا أن نقول إذا كانت s1 sub I تساوي
حرف نهاية فارغ و s2 sub تساوي فاصل
فارغ ، فقم بتعيين المتغير المنطقي لدينا على
يساوي ثم نريد إرجاع ذلك.
ثم قل فقط أن العائد يساوي.
ولإختبار ذلك ، علينا اختبار وتر جيد وخيط رديء.
لذلك دعونا نمضي قدمًا ونقول سلاسل متساوية.
سأقوم بطباعة القيمة الصحيحة فقط للقيمة المنطقية
، إذن النسبة المئوية d وسنقول سلاسل متساوية هنا ، هذا يعيد شيئًا حتى
نتمكن من وضع هذا في تعبير
الطباعة يساوي سلسلة. أريد فقط أن أتأكد من وجود
سلاسل متساوية وبعد
ذلك سنمرر في جايسون فاصلة جيسون.
وسنسميها وهذه المرة
نقول جايسون.
وأول واحد يجب أن يعيد واحدًا ، والثاني يعيد الصفر
، والواحد يمثل صحيحًا ، والصفر يمثل خطأ.
عندما نجري هذا ، نرى واحدًا وصفرًا.
واحد
لصحيح وصفر للخطأ إلا أنه من الصعب قراءته لأننا لا نملك سطر تغذية. لذلك دعونا نضيف خط تغذية
ونظهر لك مرة أخرى.
الآن نرى صفرًا واحدًا
، صحيح خطأ. جايسون جايسون متساوون.
جايسون جيسون ليس متساويًا.
هذه بعض الوظائف السريعة التي يمكنك
الآن التعلم منها ، والتعلم بشكل أساسي عن مصفوفات الأحرف وكيفية
تمثيل السلاسل باستخدام هذا المفهوم.
شكرًا لك. سأقوم أيضًا بتوفير الملف المصدر ، حتى تتمكن من إلقاء نظرة عليه بمزيد من التفصيل.
نأمل أن يكون هذا قد ساعد في مهمتك.