strverscmp(3)

الاسم
strverscmp - مقارنة سلسلتي محارف إصدار

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

موجز
#define _GNU_SOURCE         /* انظر feature_test_macros(7) */
#include <string.h>

int strverscmp(const char *s1, const char *s2);

الوصف
لمجموعة بيانات مثل jan1، jan2، ...، jan9، jan10، ... فرزها معجميًا يُنتج jan1، jan10، ...، jan2، ...، jan9. مهمة strverscmp() هي مقارنة سلسلتي محارف لإنتاج الترتيب الأول، بينما strcmp(3) يجد الترتيب المعجمي فقط. لا تستخدم هذه الدالة فئة الإعدادات المحلية LC_COLLATE، لذا فهي مخصصة غالبًا للحالات التي يُتوقع فيها أن تكون السلاسل بـ ASCII. هذا يختلف عن الترتيب الذي يُنتجه sort(1) -V.

ما تفعله هذه الدالة هو التالي. إذا كانت كلا السلسلتين متساويتين، أعد 0. وإلا، ابحث عن الموضع بين وحدتي بايت بحيث تكون السلسلتان متساويتين قبله، بينما يوجد اختلاف بعده مباشرة. ابحث عن أكبر سلاسل أرقام متتالية تحتوي على (أو تبدأ عند، أو تنتهي عند) هذا الموضع. إذا كانت واحدة أو كلتاهما فارغة، فأعد ما كانت strcmp(3) ستعيده (ترتيب عددي لقيم البايت). وإلا، قارن بين سلسلتي الأرقام عدديًا، حيث تُفسر سلاسل الأرقام التي تحتوي على صفر أو أكثر من الأصفار البادئة كما لو كان أمامها نقطة عشرية (بحيث تأتي سلاسل الأرقام ذات الأصفار البادئة الأكثر قبل سلاسل الأرقام ذات الأصفار البادئة الأقل). وبالتالي، الترتيب هو 000، 00، 01، 010، 09، 0، 1، 9، 10.

قيمة الإرجاع
تُرجع الدالة strverscmp() عددًا صحيحًا أقل من، أو يساوي، أو أكبر من الصفر إذا وُجد s1، على التوالي، سابقًا لـ s2، أو مساويًا له، أو لاحقًا له.

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

المعايير
GNU.

أمثلة
يمكن استخدام البرنامج أدناه لتوضيح سلوك strverscmp(). يستخدم strverscmp() لمقارنة سلسلتي المحارف المُعطاة كوسيطات سطر الأوامر. مثال على استخدامه هو التالي:

    $ ./a.out jan1 jan10;
    jan1 < jan10

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

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

        if (argc != 3) {
            fprintf(stderr, "Usage: %s <string1> <string2>\n", argv[0]);
            exit(EXIT_FAILURE);
        }

        res = strverscmp(argv[1], argv[2]);

        printf("%s %s %s\n", argv[1],
               (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]);

        exit(EXIT_SUCCESS);
    }

انظر أيضًا
rename(1), strcasecmp(3), strcmp(3), strcoll(3)

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

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

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