strcmp(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ATTRIBUTES | STANDARDS | HISTORY | CAVEATS | EXAMPLES | SEE ALSO | COLOPHON

strcmp(3)                Library Functions Manual               strcmp(3)

NAME         top

       strcmp - strings compare

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <string.h>

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

DESCRIPTION         top

       The strcmp() function compares the two strings s1 and s2, as if by
       calling memcmp(3).

       It is equivalent to

           memcmp(s1, s2, MIN(strlen(s1),strlen(s2))+1)

RETURN VALUE         top

       See memcmp(3).

ATTRIBUTES         top

       For an explanation of the terms used in this section, see
       attributes(7).
       ┌──────────────────────────────────────┬───────────────┬─────────┐
       │ Interface                            Attribute     Value   │
       ├──────────────────────────────────────┼───────────────┼─────────┤
       │ strcmp()                             │ Thread safety │ MT-Safe │
       └──────────────────────────────────────┴───────────────┴─────────┘

STANDARDS         top

       C11, POSIX.1-2008.

HISTORY         top

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

CAVEATS         top

       The locale is not taken into account (for a locale-aware
       comparison, see strcoll(3)).

EXAMPLES         top

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

           $ ./strcmp ABC ABC;
           <str1> and <str2> are equal
           $ ./strcmp ABC AB;      # 'C' is ASCII 67; 'C' - '\0' = 67
           <str1> is greater than <str2> (67)
           $ ./strcmp ABA ABZ;     # 'A' is ASCII 65; 'Z' is ASCII 90
           <str1> is less than <str2> (-25)
           $ ./strcmp ABJ ABC;
           <str1> is greater than <str2> (7)
           $ ./strcmp $'\201' A;   # 0201 - 0101 = 0100 (or 64 decimal)
           <str1> is greater than <str2> (64)

       The last example uses bash(1)-specific syntax to produce a string
       containing an 8-bit ASCII code; the result demonstrates that the
       string comparison uses unsigned characters.

   Program source

       // strcmp.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 != 3) {
               fprintf(stderr, "Usage: %s <str1> <str2>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

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

           if (res == 0) {
               printf("<str1> and <str2> are equal");
               printf("\n");
           } else if (res < 0) {
               printf("<str1> is less than <str2> (%d)\n", res);
           } else {
               printf("<str1> is greater than <str2> (%d)\n", res);
           }

           exit(EXIT_SUCCESS);
       }

SEE ALSO         top

       memcmp(3), strcasecmp(3), strcoll(3), streq(3), string(3),
       strverscmp(3), wcscmp(3)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report
       for this manual page, see
       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
       This page was obtained from the tarball man-pages-6.19.tar.gz
       fetched from
       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
       2026-09-09.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to
       man-pages@man7.org

Linux man-pages 6.19            2026-08-10                      strcmp(3)

Pages that refer to this page: bash(1)pmlogrewrite(1)hsearch(3)qsort(3)scandir(3)selinux_file_context_cmp(3)strcasecmp(3)strcoll(3)string(3)strncmp(3)strverscmp(3)strxfrm(3)wcscmp(3)signal-safety(7)