I have the following:
int findPar(char* str)
{
int counter=0;
while (*str)
{
if(str[0] == "(") <---- Warning
{
counter++;
}
else if (str[0]== ")") <---- Warning
{
counter--;
}
if (counter<0)
{
return 0;
}
str++;
}
if (counter!=0)
{
return 0;
}
return 1;
}
The warning i get is comparison between an int and a char.
I tried to do the comparison (first char in the string vs. given char) also with strcmp like this:
if (strcmp(str, ")")==0) { stuff }
but it never goes in to 'stuff' even when the comparison (should) be correct.
how should i do it?
You're comparing a character (str[0]) with a const char[N] ("whatever"). You need to use single quotes because double quotes denote character arrays, whereas single quotes denote single characters:
if (str[0] == ')') // or *str == ')'
Etc.
The reason why strcmp was failing as well was because, while the string at some time does point to the ), it has more characters beyond that (i.e. is not followed immediately by a '\0') so the string is not equivalent to the string ")" which has one character.
If str is a C string (null-terminated array of chars), then str[0] is a char.
Note that the type of quotes matters! ')' is a char, while ")" is a string (i.e. a ')' char followed by a null terminator).
So, you may compare two chars:
str[0] == ')'
or you may compare two strings
strcmp(str, ")") == 0
naturally, (the second works if str string really only contains that parenthesis).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With