|
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ATTRIBUTES | STANDARDS | HISTORY | CAVEATS | EXAMPLES | SEE ALSO | COLOPHON |
|
|
|
strcmp(3) Library Functions Manual strcmp(3)
strcmp - strings compare
Standard C library (libc, -lc)
#include <string.h>
int strcmp(const char *s1, const char *s2);
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)
See memcmp(3).
For an explanation of the terms used in this section, see
attributes(7).
┌──────────────────────────────────────┬───────────────┬─────────┐
│ Interface │ Attribute │ Value │
├──────────────────────────────────────┼───────────────┼─────────┤
│ strcmp() │ Thread safety │ MT-Safe │
└──────────────────────────────────────┴───────────────┴─────────┘
C11, POSIX.1-2008.
POSIX.1-2001, C89, SVr4, 4.3BSD.
The locale is not taken into account (for a locale-aware
comparison, see strcoll(3)).
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);
}
memcmp(3), strcasecmp(3), strcoll(3), streq(3), string(3),
strverscmp(3), wcscmp(3)
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)