Start New Discussion within our Software Development Community

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?

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?

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.

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


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

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

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.

This article has been dead for over six months. Start a new discussion instead.