strchr()の戻り値は、真(true)/偽(false)じゃないぞと
これは、こんなif文書くのがそもそもの間違いだよなぁ*1
strchr()は検索文字が見つからない場合はnullを返すのだから
きちんと「strchr("+-*/", c) != null」と書きましょう
以下のコードを見てみます。
if (strchr("+-*/", c)) { // c は四則演算の記号かな?
...
}この if 文は c が + - * / のいずれかの場合に条件が真となり、ブロック中が実行されます。…と、思いきや、実は条件が真になるケースがもうひとつありました。c が '\0' の場合です。