に文字列内の文字間の比較:は、私は次のことを持って指定されたchar
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でも比較(指定されたchar対文字列の最初の文字)を実行しようとしました:
if (strcmp(str, ")")==0) { stuff }
が、場合でも、比較は(はず)それは「もの」にして行くことはありません正しい。
どうすればよいですか?
一重引用符を使用してください。 '"))==)\ 0 '文字通り、' ')' ==) 'です。 – chris
'strcmp(str、 ')')== 0)'は、文字列全体char *を1つのリテラル文字と比較しているため動作しません。 'strcmp(str [0]、 ')')== 0'と思っています。 – EdChum
@EdChum 'strcmp'は、パラメータが文字列であると想定しています。 ')'の場合、値41の文字は '(char *)41'に変換されます。したがって、関数はメモリアドレス '41'を調べ、文字列を参照してBAMを参照します。 Segfault。 – Imp