我有以下代码:
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类型。
我尝试使用strcmp进行比较(将字符串中的第一个字符与给定字符进行比较),代码如下:
if (strcmp(str, ")")==0) { stuff }
即使比较是正确的,但它从未进入“stuff”,我该如何做?
")" == )\0
字面意思是右括号加空字符,而')' == )
。 - chrisstrcmp(str, ')') == 0
不起作用,因为你正在将整个字符串char*与单个字面字符进行比较。如果你这样做strcmp(str[0], ')') == 0
就能行。 - EdChumstrcmp
函数期望其参数为字符串。')',一个值为41
的字符将被转换为(char*)41
。因此该函数将查找内存地址41
,希望看到一个字符串,但实际上 - 糟糕!出现了段错误。 - Imp