English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم البرمجة بلغة C لتحويل النصوص. ستتعلم بفضل الأمثلة كيفية إعلانها وتحديثها وتطبيقها في عمليات الإدخال والخروج (I / O).
في برمجة C، النصوص هي سلسلة من الأحرف تنتهي بـ null character '\0'. على سبيل المثال:
char c[] = "c string";
عندما يواجه المترجم سلسلة من الأحرف مسبوقة بالضغط "\0" باستخدام الدوائر المزدوجة، يتم إضافة مسافه فارغة في النهاية تلقائيًا.
يتم إعلان النص بناءً على الشكل التالي:
char s[5];
في هذا المثال، تم إجراء إعلان 5 حروف للنص.
يمكنك بدء النصوص بعدة طرق.
char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'};
دعونا نأخذ مثالاً آخر:
char c[5] = "abcde";
في هذا المثال، نحاول تخصيص 6 حروف (الحرف الأخير هو '\0') لعدد الحروف في الحزمة التي تحتوي على 5 حروف. هذا هو أسلوب خاطئ، لا تقم بذلك أبداً.
في لغة C، لا تدعم الحزم والنصوص عملية الربط عند إجراء الت声明.
char c[100]; c = "C programming"; // خطأ! لا يمكن تخصيص نوع الحزم.
ملاحظة:استخداموظيفة strcpy()بديلاً عن نسخ النص.
يمكنك استخدام وظيفة scanf() لقراءة النص.
يقرأ وظيفة scanf() سلسلة من الحروف حتى وصوله إلى مسافة (مسافة، سطر نهاية، مسافات، إلخ).
#include <stdio.h> int main(); { char name[20]; printf("ادخل الاسم: "); scanf("%s", name); printf("اسمك هو %s.", name); return 0; }
نتيجة الخروج
ادخل الاسم: Dennis Ritchie اسمك هو Dennis.
حتى لو تم إدخال Dennis Ritchie في البرنامج أعلاه، فإن النص الاسمي يحتوي فقط على "Dennis". لأن "Dennis" يحتوي على مسافة.
يمكنك استخدام هذه الوظيفة fgets() لقراءة سطر من النص. كما يمكنك استخدام puts() لعرض النص.
#include <stdio.h> int main(); { char name[30]; printf("ادخل الاسم: "); fgets(name, sizeof(name), stdin); //读取字符串 printf("اسم: "); puts(name); //显示字符串 return 0; }
نتيجة الخروج
ادخل الاسم: Tom Hanks اسم: Tom Hanks
في هذا المكان، قمنا باستخدام دالة fgets() لقراءة النمط النصي من المستخدم.
fgets(name, sizeof(name), stdlin); // قراءة النمط النصي
نتيجة sizeof(name) هي 30. لذلك، يمكننا تقبيل أقصى 30 حرفًا كإدخال، وهو حجم نمط name.
للطباعة النمط النصي، استخدمنا put (name);
ملاحظة:يمكن أن يستقبل دالة gets() إدخال المستخدم. ولكن، تم إزالتها من المعيار C.
هذا لأن gets() يسمح لك بإدخال طول أي حرف. لذلك، قد يوجد تجاوز للسعة الب缓冲ية.
يمكن إرسال الأنماط النصية بشكل مشابه إلى الدوال. اكتشف المزيد عنإرسال المجموعات إلى الدالةالمزيد من المعلومات.
#include <stdio.h> void displayString(char str[]); int main(); { char str[50]; printf("ادخل النص: "); fgets(str, sizeof(str), stdin); displayString(str); // إرسال النمط النصي إلى الدالة return 0; } void displayString(char str[]); { printf("خروج النص: "); puts(str); }
مثل المجموعات، يتم "تقليل" اسم النمط النصي إلى مرجع. لذلك، يمكنك استخدام المراجع لتحرير عناصر النمط النصي. نوصي بمراجعةالمسافات والإشارات في C.
#include <stdio.h> int main(void) { char name[] = "Harry Potter"; printf("%c", *name); // خروج: H printf("%c", *(name+1)); // خروج: a printf("%c", *(name+7)); // خروج: o char *namePtr; namePtr = name; printf("%c", *namePtr); // خروج: H printf("%c", *(namePtr+1)); // خروج: a printf("%c", *(namePtr+7)); // خروج: o }