.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2001, Andries E. Brouwer .\" Copyright 2016, Michael Kerrisk .\" 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 strverscmp 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم strverscmp \- مقارنة سلسلتي محارف إصدار .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#define _GNU_SOURCE\fP /* انظر feature_test_macros(7) */ \fB#include \fP .P \fBint strverscmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP .fi .SH الوصف .\" classical solution: "rename jan jan0 jan?" .\" sort -V sorts a-1.0a < a-1.0.1a; strverscmp() does not لمجموعة بيانات مثل \fIjan1\fP، \fIjan2\fP، ...، \fIjan9\fP، \fIjan10\fP، ... فرزها معجميًا يُنتج \fIjan1\fP، \fIjan10\fP، ...، \fIjan2\fP، ...، \fIjan9\fP. مهمة \fBstrverscmp\fP() هي مقارنة سلسلتي محارف لإنتاج الترتيب الأول، بينما \fBstrcmp\fP(3) يجد الترتيب المعجمي فقط. لا تستخدم هذه الدالة فئة الإعدادات المحلية \fBLC_COLLATE\fP، لذا فهي مخصصة غالبًا للحالات التي يُتوقع فيها أن تكون السلاسل بـ ASCII. هذا يختلف عن الترتيب الذي يُنتجه \fBsort\fP(1) \fB\-V\fP. .P ما تفعله هذه الدالة هو التالي. إذا كانت كلا السلسلتين متساويتين، أعد 0. وإلا، ابحث عن الموضع بين وحدتي بايت بحيث تكون السلسلتان متساويتين قبله، بينما يوجد اختلاف بعده مباشرة. ابحث عن أكبر سلاسل أرقام متتالية تحتوي على (أو تبدأ عند، أو تنتهي عند) هذا الموضع. إذا كانت واحدة أو كلتاهما فارغة، فأعد ما كانت \fBstrcmp\fP(3) ستعيده (ترتيب عددي لقيم البايت). وإلا، قارن بين سلسلتي الأرقام عدديًا، حيث تُفسر سلاسل الأرقام التي تحتوي على صفر أو أكثر من الأصفار البادئة كما لو كان أمامها نقطة عشرية (بحيث تأتي سلاسل الأرقام ذات الأصفار البادئة الأكثر قبل سلاسل الأرقام ذات الأصفار البادئة الأقل). وبالتالي، الترتيب هو \fI000\fP، \fI00\fP، \fI01\fP، \fI010\fP، \fI09\fP، \fI0\fP، \fI1\fP، \fI9\fP، \fI10\fP. .SH "قيمة الإرجاع" تُرجع الدالة \fBstrverscmp\fP() عددًا صحيحًا أقل من، أو يساوي، أو أكبر من الصفر إذا وُجد \fIs1\fP، على التوالي، سابقًا لـ \fIs2\fP، أو مساويًا له، أو لاحقًا له. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBstrverscmp\fP() T} سلامة الخيوط MT\-Safe .TE .\" FIXME: The marking is different from that in the glibc manual, .\" which has: .\" .\" strverscmp: MT-Safe locale .\" .\" glibc manual says strverscmp should have marking locale because it calls .\" isdigit() multiple times and isdigit() uses locale variable. .\" But isdigit() has two implementations. With different compiling conditions, .\" we may call isdigit() in macro, then strverscmp() should not have locale .\" problem. .SH المعايير GNU. .SH أمثلة يمكن استخدام البرنامج أدناه لتوضيح سلوك \fBstrverscmp\fP(). يستخدم \fBstrverscmp\fP() لمقارنة سلسلتي المحارف المُعطاة كوسيطات سطر الأوامر. مثال على استخدامه هو التالي: .P .in +4n .EX $\fB ./a.out jan1 jan10\fP; jan1 < jan10 .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (strverscmp.c) \& .EX #define _GNU_SOURCE #include #include #include \& int main(int argc, char *argv[]) { int res; \& if (argc != 3) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& res = strverscmp(argv[1], argv[2]); \& printf("%s %s %s\[rs]n", argv[1], (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBrename\fP(1), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\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 .