【发布时间】:2012-05-16 11:10:51
【问题描述】:
我有以下:
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 }
但即使比较(应该)正确,它也永远不会进入“东西”。
我应该怎么做?
【问题讨论】:
-
使用单引号。
")" == )\0字面意思,而')' == ). -
strcmp( str, ')' ) ==0)不起作用,因为您将整个字符串 char* 与单个文字字符进行比较。如果你这样做strcmp( str[0], ')') == 0我认为会起作用 -
@EdChum
strcmp期望它的参数是字符串。 ')',值41的字符将转换为(char*)41。因此该函数将查看内存地址41,希望看到一个字符串,而不是 - BAM!段错误。 -
@Imp 好的,我不确定这就是我用 think 注释我的猜测的原因,感谢您指出这一点