Friday, December 7

Compare Two Strings


Write a C program to compare two strings without using strcmp() function.

strcmp() function compares two strings lexicographically. strcmp is declared in stdio.h
Case 1: when the strings are equal, it returns zero.
Case 2: when the strings are unequal, it returns the difference between ascii values of the characters that differ.
a) When string1 is greater than string2, it returns positive value.
b) When string1 is lesser than string2, it returns negative value.
Syntax:
int strcmp (const char *s1, const char *s2);

Program: to compare two strings.

#include<stdio.h>
#include<string.h>
int cmpstr(char s1[10], char s2[10]);
int main() 
{
char arr1[10] = "Nodalo";
char arr2[10] = "nodalo";
printf(" %d", cmpstr(arr1, arr2));

// cmpstr() is equivalent of strcmp()

return 0;
}

// s1, s2 are strings to be compared

int cmpstr(char s1[10], char s2[10]) 
{
// strlen function returns the length of argument string passed
int i = strlen(s1);
int k = strlen(s2);
int bigger;
if (i < k) 
{
bigger = k;
}
else if (i > k) {
bigger = i;
}
else {
bigger = i;
}
// loops 'bigger' times
for (i = 0; i < bigger; i++) 
{
// if ascii values of characters s1[i], s2[i] are equal do nothing
if (s1[i] == s2[i]) 
{
}
//else return the ascii difference
else 
{
return (s1[i] - s2[i]);
}
}
//return 0 when both strings are same
//This statement is executed only when both strings are equal
return (0);
}

Output:
-32
Explanation:
cmpstr() is a function that illustrates C standard function strcmp(). Strings to be compared are sent as arguments to cmpstr(). Each character in string1 is compared to its corresponding character in string2. Once the loop encounters a differing character in the strings, it would return the ascii difference of the differing characters and exit.