Scroll to navigation

strsep(3) Library Functions Manual 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

المعايير

لا شيء.

التاريخ

4.4BSD.

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

العلل

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

تُعدِّل هذه الدالة معاملها الأول.
لا يمكن استخدام هذه الدالة على سلاسل محارف ثابتة.
يُفقد هوية الحرف المُحدِّد.

أمثلة

البرنامج أدناه هو نسخة من البرنامج الموجود في 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 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

15 يونيو 2024 صفحات دليل لينكس 6.9.1