ページ 1 / 1
if文分岐がうまくできない
Posted: 2010年5月13日(木) 19:46
by にのさん
わからないところがあったのでみてほしいです。
char[/url]型に入ってる数字の判定で、a[n]が'2'から'9'の数字かつ、a[n+1]は空白なら
っていう分岐をつくりたいんですけど、
if((int)a[n]>49&&(int)a[n]<58&&a[n+1]==' ')
これでやったら分岐がうまくいきませんでした。どうやったらいいでしょうか。

Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 20:25
by たいちう
空白が半角スペースの事を指しているならこう。
if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')
Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 20:34
by にのさん
たいちうさんありがとうございます。
そちらの方法でやったところ、やっぱり、"2 "という文字列で
偽になってしまい、elseのほうにいってしまいます。
確認のために、このif分岐を通過しないように実行したときは成功しました。
Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 20:41
by たいちう
if文の直前に次の行を入れて結果を教えて下さい。
printf("n = %d, a = \"%s\"\n", n, a);
Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 20:52
by にのさん
H2
n = 1, a = "H2
"
ok
okはifが真の時にでるものですがなぜかでました
ほかのとこに原因がありそうです。ほかの原因を探してみます。
たいちうさんありがとうございました。
Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 21:13
by Dixq (管理人)
if文のところ、イコールは付いていますか?
if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')
それでも解決しないようなら、一度プログラムコードを投稿されてはいかがでしょうか?
Re:if文分岐がうまくできない
Posted: 2010年5月13日(木) 21:47
by ookami
「解決!」になっていたのでスルーしてましたが、続きそうなので私からも。
"2 "ではダメで"H2 "では意図どおりということは、n=0の場合をチェックしていないのではないかと思ったのですが、いかがでしょうか。
Re:if文分岐がうまくできない
Posted: 2010年5月14日(金) 08:55
by たいちう
なぜ2つめの"が改行後に表示されるのでしょうか?
私の書いた¥マークが\になっているので判りにくかったかもしれませんが、
一応確認して再度実行したほうが良いと思います。
Re:if文分岐がうまくできない
Posted: 2010年5月14日(金) 11:17
by たかぎ
> 私の書いた¥マークが\になっているので判りにくかったかもしれませんが、
本来は逆斜線(バックスラッシュ)であるべきで、円記号の方が文字化けなのですが、あまり知られていないんですかねえ。