strsep(3)

الاسم
strsep - استخراج رمز من سلسلة محارف

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <string.h>

char *strsep(char **restrict stringp, const char *restrict delim);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

strsep():
    منذ glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 وما قبله:
        _BSD_SOURCE

الوصف
إذا كان *stringp فارغًا (NULL)، تُعيد الدالة strsep() قيمة NULL ولا تفعل شيئًا آخر. وإلا، تجد هذه الدالة أول رمز في السلسلة *stringp المُحدَّد بأحد البايتات في السلسلة delim. يُنهى هذا الرمز باستبدال المُحدِّد ببايت فارغ ('\0')، ويُحدَّث *stringp ليشير إلى ما بعد الرمز. في حال عدم العثور على مُحدِّد، يُؤخذ الرمز كامل السلسلة *stringp، ويُجعل *stringp فارغًا (NULL).

قيمة الإرجاع
تُعيد الدالة strsep() مؤشرًا إلى الرمز، أي أنها تُعيد القيمة الأصلية لـ *stringp.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
strsep() | سلامة الخيوط | MT-Safe

المعايير
BSD.

التاريخ
4.4BSD.

أُدخلت الدالة strsep() كبديل لـ strtok(3)، لأن الأخيرة لا تستطيع معالجة الحقول الفارغة.

تحذيرات
توخ الحذر عند استخدام هذه الدالة. إذا استخدمتها، فلاحظ أن:

•   يُفقد هوية الحرف المُحدِّد.

أمثلة
البرنامج أدناه هو نسخة من البرنامج الموجود في strtok(3)، والذي لا يتجاهل المُحدِّدات المتعددة أو الرموز الفارغة:

    $ ./a.out 'a/bbb///cc;xxx:yyy:' ':;' '/'
    1: a/bbb///cc
             --> a
             --> bbb
             -->
             -->
             --> cc
    2: xxx
             --> xxx
    3: yyy
             --> yyy
    4:
             -->

  مصدر البرنامج
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int
    main(int argc, char *argv[])
    {
        char *token, *subtoken;

        if (argc != 4) {
            fprintf(stderr, "Usage: %s string delim subdelim\n", argv[0]);
            exit(EXIT_FAILURE);
        }

        for (unsigned int j = 1; (token = strsep(&argv[1], argv[2])); j++) {
            printf("%u: %s\n", j, token);

            while ((subtoken = strsep(&token, argv[3])))
                printf("\t --> %s\n", subtoken);
        }

        exit(EXIT_SUCCESS);
    }

انظر أيضًا
memchr(3), strchr(3), string(3), strpbrk(3), strspn(3), strstr(3), strtok(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.