English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي بلغة C

تحكم عملية لغة C

الوظائف في لغة C

المسافات في لغة C

الإشارات في لغة C

النصوص في لغة C

مجموعات بيانات لغة C

ملفات لغة C

معلومات أخرى بلغة C

دليل مرجع لغة C

النصوص في لغة C

في هذا الدليل، ستتعلم البرمجة بلغة 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() سلسلة من الحروف حتى وصوله إلى مسافة (مسافة، سطر نهاية، مسافات، إلخ).

مثال 1: قراءة سطر باستخدام 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() لعرض النص.

مثال 2: 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() يسمح لك بإدخال طول أي حرف. لذلك، قد يوجد تجاوز للسعة الب缓冲ية.

إرسال النمط النصي إلى الدالة

يمكن إرسال الأنماط النصية بشكل مشابه إلى الدوال. اكتشف المزيد عنإرسال المجموعات إلى الدالةالمزيد من المعلومات.

مثال 3: إرسال النمط النصي إلى الدالة

#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.

مثال 4: الأنماط النصية والمراجع

#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
}

وظائف النصوص الشائعة