الاسم
- Provided by: manpages-ar-dev (Version: 4.31.0-1)
- Source: manpages-l10n
- Report a bug
مكتبة سي المعيارية (libc، -lc)
#include <string.h>
int strcmp(const char *s1, const char *s2); int strncmp(const char s1[], const char s2[], size_t n);
memcmp(s1, s2, MIN(strlen(s1),strlen(s2))+1)
memcmp(s1, s2, MIN(MIN(strnlen(s1,n),strnlen(s2,n))+1, n))
ترجع الدالتان strcmp() و strncmp() عددًا صحيحًا أقل من الصفر، أو مساويًا له، أو أكبر منه إذا وُجد أن s1 (أو أول n بايت منها) أقل من s2، أو مطابقًا له، أو أكبر منه، على التوالي.
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| strcmp(), strncmp() | سلامة الخيوط | MT-Safe |
يحدد POSIX.1 فقط ما يلي:
يُحدد إشارة قيمة الإرجاع غير الصفرية بإشارة الفرق بين قيم أول زوج من البايتات (كلاهما يُفسر كنوع unsigned char) يختلفان في السلاسل التي تُقارن.
في glibc، كما في معظم التطبيقات الأخرى، قيمة الإرجاع هي النتيجة الحسابية لطرح آخر بايت تمت مقارنته في s2 من آخر بايت تمت مقارنته في s1. (إذا كان الحرفان متساويين، فإن هذا الفرق هو 0.)
C11, POSIX.1-2008.
POSIX.1-2001، C89، SVr4، 4.3BSD.
يمكن استخدام البرنامج أدناه لتوضيح عمل strcmp() (عند إعطائه وسيطين) و strncmp() (عند إعطائه ثلاث وسائط). أولاً، بعض الأمثلة باستخدام strcmp():
$ ./string_comp ABC ABC; <str1> و <str2> متساويان $ ./string_comp ABC AB; # 'C' هو ASCII 67; 'C' - '\0' = 67 <str1> أكبر من <str2> (67) $ ./string_comp ABA ABZ; # 'A' هو ASCII 65; 'Z' هو ASCII 90 <str1> أصغر من <str2> (-25) $ ./string_comp ABJ ABC; <str1> أكبر من <str2> (7) $ ./string_comp $'\201' A; # 0201 - 0101 = 0100 (أو 64 عشريًا) <str1> أكبر من <str2> (64)
يستخدم المثال الأخير بناء جملة خاصًا بـ bash(1) لإنتاج سلسلة محارف تحتوي على رمز ASCII 8-بت؛ تُظهر النتيجة أن مقارنة السلاسل تستخدم محارف غير مُوقَّعة.
ثم بعض الأمثلة باستخدام strncmp():
$ ./string_comp ABC AB 3; <str1> أكبر من <str2> (67) $ ./string_comp ABC AB 2; <str1> و <str2> متساويان في أول 2 بايت
/* string_comp.c
مرخص بموجب رخصة جنو العمومية العامة الإصدار 2 أو الأحدث.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
int res;
if (argc < 3) {
fprintf(stderr, "الاستخدام: %s <str1> <str2> [<n>]\n", argv[0]);
exit(EXIT_FAILURE);
}
if (argc == 3)
res = strcmp(argv[1], argv[2]);
else
res = strncmp(argv[1], argv[2], atoi(argv[3]));
if (res == 0) {
printf("<str1> و <str2> متساويان");
if (argc > 3)
printf(" في أول %d بايت\n", atoi(argv[3]));
printf("\n");
} else if (res < 0) {
printf("<str1> أصغر من <str2> (%d)\n", res);
} else {
printf("<str1> أكبر من <str2> (%d)\n", res);
}
exit(EXIT_SUCCESS);
}
memcmp(3), strcasecmp(3), strcoll(3), streq(3), string(3), strncasecmp(3), strverscmp(3), wcscmp(3), wcsncmp(3), ascii(7)
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.