wcsncmp() — Compare Wide-Character Strings
Format
#include <wchar.h>
int wcsncmp(const wchar_t *string1, const wchar_t *string2, size_t count);
Language Level
XPG4
Threadsafe
Yes
Wide Character Function
See Wide Characters for more information.
Description
The wcsncmp()
function
compares up to count wide characters in string1 to string2.
The wcsncmp()
function
operates on null-ended wide-character strings; string arguments to
this function should contain a wchar_t null character marking
the end of the string.
Return Value
The wcsncmp()
function
returns a value indicating the relationship between the two strings,
as follows:
Value | Meaning |
---|---|
Less than 0 | string1 less than string2 |
0 | string1 identical to string2 |
Greater than 0 | string1 greater than string2 |
Example
This example demonstrates the difference
between the
wcscmp()
function,
which compares the entire strings, and the wcsncmp()
function,
which compares only a specified number of wide characters in the strings.
#include <stdio.h>
#include <wchar.h>
#define SIZE 10
int main(void)
{
int result;
int index = 3;
wchar_t buffer1[SIZE] = L"abcdefg";
wchar_t buffer2[SIZE] = L"abcfg";
void print_result( int, wchar_t *, wchar_t * );
result = wcscmp( buffer1, buffer2 );
printf( "Comparison of each character\n" );
printf( " wcscmp: " );
print_result( result, buffer1, buffer2 );
result = wcsncmp( buffer1, buffer2, index);
printf( "\nComparison of only the first %i characters\n", index );
printf( " wcsncmp: " );
print_result( result, buffer1, buffer2 );
}
void print_result( int res, wchar_t * p_buffer1, wchar_t * p_buffer2 )
{
if ( res == 0 )
printf( "\"%ls\" is identical to \"%ls\"\n", p_buffer1, p_buffer2);
else if ( res < 0 )
printf( "\"%ls\" is less than \"%ls\"\n", p_buffer1, p_buffer2 );
else
printf( "\"%ls\" is greater than \"%ls\"\n", p_buffer1, p_buffer2 );
}
/**************** Output should be similar to: ******************
Comparison of each character
wcscmp: "abcdefg" is less than "abcfg"
Comparison of only the first 3 characters
wcsncmp: "abcdefg" is identical to "abcfg"
*/