Online Courses
Free Tutorials  Go to Your University  Placement Preparation 
Goeduhub's Online Courses @ Udemy in Just INR 570/-
Online Training - Youtube Live Class Link
0 like 0 dislike
177 views
in Tutorial & Interview questions by Goeduhub's Expert (8.3k points)
Comparsion: strcmp(), strncmp(), strcasecmp(), strncasecmp()

Goeduhub's Top Online Courses @Udemy

For Indian Students- INR 360/- || For International Students- $9.99/-

S.No.

Course Name

 Coupon

1.

Tensorflow 2 & Keras:Deep Learning & Artificial Intelligence

Apply Coupon

2.

Natural Language Processing-NLP with Deep Learning in Python Apply Coupon

3.

Computer Vision OpenCV Python | YOLO| Deep Learning in Colab Apply Coupon
    More Courses

1 Answer

0 like 0 dislike
by Goeduhub's Expert (8.3k points)
 
Best answer

The strcase*-functions are not Standard C, but a POSIX extension.

The strcmp function lexicographically compare two null-terminated character arrays. The functions return a negative value if the first argument appears before the second in lexicographical order, zero if they compare equal, or positive if the first argument appears after the second in lexicographical order.

#include <stdio.h> 

#include <string.h>

void compare(char const *lhs, char const *rhs) 

{    

int result = strcmp(lhs, rhs); // compute comparison once    

if (result < 0) 

{        

printf("%s comes before %s\n", lhs, rhs);    

else if (result == 0) 

{        

printf("%s equals %s\n", lhs, rhs);    

else 

{                                   // last case: result > 0        

printf("%s comes after %s\n", lhs, rhs);    

}

int main(void) 

{    

compare("BBB", "BBB");    

compare("BBB", "CCCCC");    

compare("BBB", "AAAAAA");    

return 0; 

}

Outputs:

BBB equals BBB BBB comes before CCCCC BBB comes after AAAAAA

As strcmp, strcasecmp function also compares lexicographically its arguments after translating each character to its lowercase correspondent:

#include <stdio.h> 

#include <string.h>

void compare(char const *lhs, char const *rhs) 

{    

int result = strcasecmp(lhs, rhs);          // compute case-insensitive comparison once    

if (result < 0) 

{        

printf("%s comes before %s\n", lhs, rhs);    

else if (result == 0) 

{        

printf("%s equals %s\n", lhs, rhs);    

else 

{                     // last case: result > 0        

printf("%s comes after %s\n", lhs, rhs);    

}

int main(void) 

{    

compare("BBB", "bBB");    

compare("BBB", "ccCCC");    

compare("BBB", "aaaaaa");    

return 0; 

}

Outputs:

BBB equals bBB 

BBB comes before ccCCC 

BBB comes after aaaaaa

strncmp and strncasecmp compare at most n characters:

#include <stdio.h> 

#include <string.h>

void compare(char const *lhs, char const *rhs, int n) 

{    

int result = strncmp(lhs, rhs, n);               // compute comparison once    

if (result < 0) 

{        

printf("%s comes before %s\n", lhs, rhs);    

else if (result == 0) 

{        

printf("%s equals %s\n", lhs, rhs);    

else 

{                       // last case: result > 0        

printf("%s comes after %s\n", lhs, rhs);    

}

int main(void) 

{    

compare("BBB", "Bb", 1);    

compare("BBB", "Bb", 2);    

compare("BBB", "Bb", 3);    

return 0; 

}

Outputs:

BBB equals Bb 

BBB comes before Bb 

BBB comes before Bb

3.3k questions

7.1k answers

394 comments

4.6k users

 Goeduhub:

About Us | Contact Us || Terms & Conditions | Privacy Policy || Youtube Channel || Telegram Channel © goeduhub.com Social::   |  | 
...