初めまして。どうしてもわからないことがあるので質問させていただきます。
IF文などで分岐をするときに文字の比較をしたいのですが、
文字列であればstrncmp(~~で結果が == 0であるかどうかで判断しています。
ですが、1文字になると警告がでてきてしまいます。
strncmp("a", str_A[3], 1) == 0
といった感じでやっているのですが、この関数は文字列同士の比較するらしく
ポインタでないと危険だよ的なことを言われてしまいます。
警告は出てもプログラムは問題なく作動するのですが、他にやり方がありそうな気がします。
1文字の比較をするときはみなさんはどのようにしているでしょうか?
1文字の比較をしたいとき
Re:1文字の比較をしたいとき
普通に等価演算子や関係演算子で比較できます。
const char s[/url] = "abc";
if (s[0] == 'a')
{
...
}
といった感じです。
const char s[/url] = "abc";
if (s[0] == 'a')
{
...
}
といった感じです。
Re:1文字の比較をしたいとき
> strncmp("a", str_A[3], 1) == 0
strncmp("a", &str_A[3], 1) == 0
か、
strncmp("a", str_A+3, 1) == 0
で、1文字の文字列として関数に渡せますよ。
警告が出るのは文字列(const char*)を渡すところに文字(char)を渡しているからです。
ですが、単なる比較ならば、
if('a' == str_A[3])
の方が良いです。
strncmp("a", &str_A[3], 1) == 0
か、
strncmp("a", str_A+3, 1) == 0
で、1文字の文字列として関数に渡せますよ。
警告が出るのは文字列(const char*)を渡すところに文字(char)を渡しているからです。
ですが、単なる比較ならば、
if('a' == str_A[3])
の方が良いです。
Re:1文字の比較をしたいとき
なるほど、よくわかりました。ありがとうございます。
これで考えてみると、文字列比較をするときに
関数strncmpを使わずにFor構文などで1文字ずつ比較して
合ってるかどうかで比較することもできるんですね。
(面倒なのでstrncmpを使いますが)
勉強になりました。ありがとうございます。
これで考えてみると、文字列比較をするときに
関数strncmpを使わずにFor構文などで1文字ずつ比較して
合ってるかどうかで比較することもできるんですね。
(面倒なのでstrncmpを使いますが)
勉強になりました。ありがとうございます。