Search code examples
c++cstringstrcmp

Compare between a char in a string to a given char


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?


Solution

  • 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).