1.11M Members

how to know if 2 strings are identical

 
0
 

Hey everyone.
I have a problem with 2 strings i need to compare. My code is the following

if((*(fixedparkpnt)).name == pname)
{
 //do stuff
}

I am trying to make a search proceedure based on a name given by the user but the condition is always false. I have tried the function strcmp(); but it compares only the numerical values of the strings so i dismissed it. Any suggestions to make the comparisson work?

 
0
 

In the code that you show you're comparing the addresses of two pointers, and not the actual contents of them. It's strange that 'strcmp' didn't work for you, since it's supposed to tell you when two strings are equal. One of the mistakes I did when I was new to C was to think that 'strcmp' returned 1 if the strings were equal, while it actually returns 0 if two strings are equal. Might that be the problem?

 
0
 

use strcmp function

 
0
 

Two c-strings are identical if, the starting addresses are the same or if different(starting addresses) the characters that constitute the c-string are the same.

 
1
 
if((strcmp(string1, string2))==0) 
  string1 is equal to string2

or

int num = strcmp(string1, string2);
if(num==0) 
  strings are equal
else if(num < 1)
  string2 is greater than string1 //note the direction of 
   //the < (big "mouth", facing string2)
else
  string1 is greater than string 2 //string1 now has the "big mouth" of the > symbol
 
1
 

If you want to make your own string comparison function

1. If length of string 1 is not equal to string 2 then, strings are not identical
2. for i:0, to strlen, check if the str1 == str2. If they are not equal then break out of the loop

 
-1
 

What do you mean by identical? If you mean the string content is identical
(e.g "hello world" = "hello world") then use strcmp.

strcmp evaluates two strings and if identical returns a 0.

In you code, I believe your comparing the value of pointers, and so if the pointers aren't identical, the "if" statement will always return false.

You
This article has been dead for over six months: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: