أفضل طريقة للحصول على إدخال المستخدم لواجهة سطر الأوامر المدفوعة بالقائمة في C
عند تطوير تطبيقات واجهة سطر الأوامر (CLI) في C، أحد المتطلبات الشائعة هو جمع إدخال المستخدم عند تقديم خيارات محدودة. يمكن أن يكون هذا مفيدًا بشكل خاص عندما ترغب في إنشاء قائمة بسيطة للمستخدمين للتنقل في ميزات برنامجك. في هذه التدوينة، سنستكشف أفضل الطرق للحصول على إدخال المستخدم بشكل فعال وكفء، مع التركيز على عدد قليل من الدوال المناسبة لهذه المهمة.
تحدي إدخال المستخدم
تخيل أن لديك قائمة تحتوي على الخيارات التالية:
- A) طباعة القائمة.
- B) إضافة 99 إلى نهاية القائمة.
- C) حذف جميع العناصر المكررة.
- D) إعادة التعيين 5 مرات.
في هذه الحالة، ترغب في أن يستجيب برنامجك بشكل مناسب عندما يقوم المستخدم بإدخال اختياره، مثل كتابة “A” أو الضغط على مفتاح محدد. القدرة على معالجة هذا الإدخال بسلاسة هي المفتاح لإنشاء تجربة مستخدم سلسة.
حلول للتعامل مع إدخال المستخدم
1. استخدام getchar()
إحدى أبسط وأكثر الطرق استخدامًا للحصول على إدخال حرف واحد في C هي استخدام دالة getchar()
. تقوم هذه الدالة بالتقاط حرف من الإدخال القياسي وإعادته كعدد صحيح. إليك نظرة عامة سريعة حول كيفية تنفيذها:
مثال على الكود:
#include <stdio.h>
int main() {
char choice;
printf("يرجى اختيار خيار:\n");
printf("A) طباعة القائمة.\n");
printf("B) إضافة 99 إلى نهاية القائمة.\n");
printf("C) حذف جميع العناصر المكررة.\n");
printf("D) إعادة التعيين 5 مرات.\n");
choice = getchar(); // انتظر إدخال المستخدم
switch (choice) {
case 'A':
// كود لطباعة القائمة
break;
case 'B':
// كود لإضافة 99 إلى القائمة
break;
case 'C':
// كود لحذف العناصر المكررة
break;
case 'D':
// كود لإعادة التعيين
break;
default:
printf("اختيار غير صحيح.\n");
}
return 0;
}
النقاط الرئيسية:
getchar()
تقرأ حرفًا واحدًا في كل مرة.- إنها فعالة للقوائم حيث الخيارات محدودة.
- معالجة الإدخال غير الصحيح هي عملية مباشرة، كما هو موضح في هيكل switch-case.
2. استخدام cgetc()
اعتمادًا على النظام الأساسي، بديل لـ getchar()
هو دالة cgetc()
, التي يمكن أيضًا استخدامها للحصول على إدخال المستخدم. ومع ذلك، قد لا تكون متاحة عالميًا مثل getchar()
، ولكن عندما تكون متاحة، فإنها توفر وظيفة مماثلة:
مثال على الكود (مفاهيمي):
#include <stdio.h>
#include <conio.h> // شامل إذا كانت cgetc() متاحة
int main() {
char choice;
printf("اختر خيارًا:\nA إلى D\n");
choice = cgetc(); // انتظر إدخال المستخدم
// نفس منطق switch-case كما في القسم السابق
return 0;
}
النقاط الرئيسية:
- قد توفر
cgetc()
وظائف إضافية اعتمادًا على المكتبة المحددة. - قد تقدم سلوكيات أو تحسينات مختلفة مقارنةً بمعالجة الإدخال القياسي.
الخاتمة
باختصار، سواء اخترت getchar()
أو cgetc()
للتعامل مع إدخال المستخدم في تطبيق واجهة سطر الأوامر المدفوعة بالقائمة في C، من المهم اختيار الدالة التي تلبي احتياجاتك بناءً على توافق النظام والمكتبات المتاحة. يمكن أن يؤدي تنفيذ قائمة بخيارات محدودة إلى تحسين تجربة المستخدم عندما يتم ذلك بسلاسة. تذكر تضمين معالجة الأخطاء المناسبة لزيادة متانة تطبيقاتك.
الآن، لديك المعرفة لتنفيذ معالجة إدخال المستخدم في تطبيقات واجهة سطر الأوامر الخاصة بك. جرب ذلك، واستمتع بالبرمجة بلغة C!