strncmp(3)

NAME
strncmp - nonstrings compare

LIBRARY
Standard C library (libc, -lc)

SYNOPSIS
#include <string.h>  // see memory.h(3head)

int strncmp(const char s1[], const char s2[], size_t n);

DESCRIPTION
The strncmp() function is similar to strcmp(3), except it compares only the first (at most) n bytes of s1 and s2.

It is equivalent to

    memcmp(s1, s2, MIN(MIN(strnlen(s1,n),strnlen(s2,n))+1, n))

RETURN VALUE
See memcmp(3).

ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value
 | Thread safety | MT-Safe

STANDARDS
C11, POSIX.1-2008.

HISTORY
POSIX.1-2001, C89, SVr4, 4.3BSD.

EXAMPLES
The program below can be used to demonstrate the operation of strncmp().

    $ ./strncmp ABC AB 3;
    <strn1> is greater than <strn2> (67)
    $ ./strncmp ABC AB 2;
    <strn1> and <str2> are equal in the first 2 bytes

  Program source
    // strncmp.c
    // Licensed under GNU General Public License v2 or later.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

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

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

        res = strncmp(argv[1], argv[2], atoi(argv[3]));

        if (res == 0) {
            printf("<strn1> and <strn2> are equal");
            printf(" in the first %d bytes\n", atoi(argv[3]));
            printf("\n");
        } else if (res < 0) {
            printf("<strn1> is less than <strn2> (%d)\n", res);
        } else {
            printf("<strn1> is greater than <strn2> (%d)\n", res);
        }

        exit(EXIT_SUCCESS);
    }

SEE ALSO
memory.h(3head), memcmp(3), strncasecmp(3), wcsncmp(3)