Monday 7 November 2011

How can you tell whether two strings are the same? in C programming

How can you tell whether two strings are the same?

The standard C library provides several functions to compare two strings to see whether they are the same.
One of these functions, strcmp(), is used here to show how this task is accomplished:

#include <stdio.h>
#include <string.h>
void main(void);
void main(void)
{
char* str_1 = “abc”;
char* str_2 = “abc”;
char* str_3 = “ABC”;
if (strcmp(str_1, str_2) == 0)
printf(“str_1 is equal to str_2.\n”);
else
printf(“str_1 is not equal to str_2.\n”);
if (strcmp(str_1, str_3) == 0)
printf(“str_1 is equal to str_3.\n”);
else
printf(“str_1 is not equal to str_3.\n”);
}

This program produces the following output:
str_1 is equal to str_2.
str_1 is not equal to str_3.

Notice that the strcmp() function is passed two arguments that correspond to the two strings you want to
compare. It performs a case-sensitive lexicographic comparison of the two strings and returns one of the
following values:
-------------------------------------------------------------------------------------------------------------
Return                                                    Value Meaning
------------------------------------------------------------------------------------------------------------
< 0                                                        The first string is less than the second string.
0                                                            The two strings are equal.
> 0                                                         The first string is greater than the second string.
-----------------------------------------------------------------------------------------------------------
In the preceding example code, strcmp() returns 0 when comparing str_1 (which is “abc”) and str_2 (which
is “abc”). However, when comparing str_1 (which is “abc”) with str_3 (which is “ABC”), strcmp() returns
a value greater than 0, because the string “ABC” is greater than (in ASCII order) the string “abc”.
Many variations of the strcmp() function perform the same basic function (comparing two strings), but with
slight differences. The following table lists some of the functions available that are similar to strcmp():
------------------------------------------------------------------------------------------------------------
Function Name                                    Description
-----------------------------------------------------------------------------------------------------------
strcmp()                                              Case-sensitive comparison of two strings
strcmpi()                                             Case-insensitive comparison of two strings
stricmp()                                             Same as strcmpi()
strncmp()                                            Case-sensitive comparison of a portion of two strings
strnicmp()                                           Case-insensitive comparison of a portion of two strings
------------------------------------------------------------------------------------------------------------
Looking at the example provided previously, if you were to replace the call to strcmp() with a call to
strcmpi() (a case-insensitive version of strcmp()), the two strings “abc” and “ABC” would be reported as
being equal.

Cross Reference:

VI.1: What is the difference between a string copy (strcpy) and a memory copy (memcpy)? When
should each be used?

No comments:

Post a Comment