在字符串中字符之间进行比较,以给定的字符(Compare between a char in a s

2019-07-29 07:30发布

我有以下几点:

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;
}

我得到的警告是一个int和一个char之间的比较。

我试图做(字符串与给定char中第一个字符)的比较也有这样的strcmp:

    if (strcmp(str, ")")==0) { stuff }

但它从来没有进入到“东西”,即使比较(应该)是正确的。

我应该怎么办呢?

Answer 1:

如果str是C字符串(字符的空终止阵列),那么str[0]是一个char。

请注意,报价事务的类型! ')'是一个char,而")"是一个字符串(即, ')'炭后跟一个空终止)。

所以,你可以比较两个字符:

str[0] == ')'

或者你可以比较两个字符串

strcmp(str, ")") == 0

自然地,(第二个作品,如果str串真的只包含括号)。



Answer 2:

你要比较的字符( str[0]const char[N] "whatever" )。 你需要,因为双引号表示字符数组,而单引号表示单个字符使用单引号:

if (str[0] == ')') // or *str == ')'

等等。

为什么原因strcmp是失败的,以及是因为,虽然在一段时间内的字符串中指向) ,它具有超越更多的字符(即不是由紧跟'\0' ),这样的字符串是不等同于字符串")"其中有一个字符。



Answer 3:

双引号, "是字符串分隔符,所以")"是一个指向字符串字面量在if(str[0] == "(")你要比较一个字符,所以你必须用单引号

if(str[0] == '(')


Answer 4:

您需要if (str[0] == ')')等。注意单引号(撇号)来表示字符文字。



文章来源: Compare between a char in a string to a given char