.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH qsort 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم qsort, qsort_r \- ترتيب مصفوفة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBvoid qsort(\fPsize_t n, size_t size; \fB void \fP\fIbase\fP\fB[\fP\fIn\fP\fB * \fP\fIsize\fP\fB], size_t \fP\fIn\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB typeof(int (const void [\fP\fIsize\fP\fB], const void [\fP\fIsize\fP\fB]))\fP \fB *\fP\fIcompar\fP\fB);\fP \fBvoid qsort_r(\fPsize_t n, size_t size; \fB void \fP\fIbase\fP\fB[\fP\fIn\fP\fB * \fP\fIsize\fP\fB], size_t \fP\fIn\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB typeof(int (const void [\fP\fIsize\fP\fB], const void [\fP\fIsize\fP\fB], void *))\fP \fB *\fP\fIcompar\fP\fB,\fP \fB void *\fP\fIarg\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBqsort_r\fP(): .nf _GNU_SOURCE .fi .SH الوصف الدالة \fBqsort\fP() ترتب مصفوفة تحتوي على \fIn\fP عنصر بحجم \fIsize\fP. المعامل \fIbase\fP يشير إلى بداية المصفوفة. .P تُرتب محتويات المصفوفة بترتيب تصاعدي وفقًا لدالة مقارنة يشير إليها \fIcompar\fP، والتي تُستدعى بمعاملين يشيران إلى الكائنات الجاري مقارنتها. .P يجب أن تُرجع دالة المقارنة عددًا صحيحًا أقل من الصفر أو مساويًا له أو أكبر منه إذا كان المعامل الأول يُعتبر على التوالي أقل من الثاني أو مساويًا له أو أكبر منه. إذا تساوى عضوان في المقارنة، فإن ترتيبهما في المصفوفة المرتبة غير محدد. .P الدالة \fBqsort_r\fP() مطابقة لـ \fBqsort\fP() باستثناء أن دالة المقارنة \fIcompar\fP تأخذ معاملًا ثالثًا. يُمرر مؤشر إلى دالة المقارنة عبر \fIarg\fP. بهذه الطريقة، لا تحتاج دالة المقارنة إلى استخدام متغيرات عامة لتمرير معاملات عشوائية، وبالتالي فهي قابلة لإعادة الدخول وآمنة للاستخدام في الخيوط. .SH "قيمة الإرجاع" الدالتان \fBqsort\fP() و \fBqsort_r\fP() لا تُرجعان أي قيمة. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBqsort\fP(), \fBqsort_r\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير .TP \fBqsort\fP() C11, POSIX.1\-2008. .SH التاريخ .TP \fBqsort\fP() POSIX.1\-2001، C89، SVr4، 4.3BSD. .TP \fBqsort_r\fP() glibc 2.8. .SH ملاحظات لمقارنة سلاسل محارف C، يمكن لدالة المقارنة استدعاء \fBstrcmp\fP(3)، كما هو موضح في المثال أدناه. .SH أمثلة لمثال على الاستخدام، انظر المثال تحت \fBbsearch\fP(3). .P مثال آخر هو البرنامج التالي، الذي يرتب السلاسل المحرفية المعطاة في معاملات سطر الأوامر: .P .\" SRC BEGIN (qsort.c) .EX #include #include #include \& static int cmpstringp(const void *p1, const void *p2) { /* المعاملات الفعلية لهذه الدالة هي "مؤشرات إلى مؤشرات إلى char"، لكن معاملات strcmp(3) هي "مؤشرات إلى char"، ومن هنا جاء التحويل التالي مع إلغاء الإشارة. */ \& return strcmp(*(const char **) p1, *(const char **) p2); } \& int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "الاستخدام: %s <سلسلة>...\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& qsort(&argv[1], argc \- 1, sizeof(char *), cmpstringp); \& for (size_t j = 1; j < argc; j++) puts(argv[j]); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .