if文分岐がうまくできない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
にのさん

if文分岐がうまくできない

#1

投稿記事 by にのさん » 15年前

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

画像

たいちう

Re:if文分岐がうまくできない

#2

投稿記事 by たいちう » 15年前

空白が半角スペースの事を指しているならこう。

if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')

にのさん

Re:if文分岐がうまくできない

#3

投稿記事 by にのさん » 15年前

たいちうさんありがとうございます。
そちらの方法でやったところ、やっぱり、"2 "という文字列で
偽になってしまい、elseのほうにいってしまいます。
確認のために、このif分岐を通過しないように実行したときは成功しました。

たいちう

Re:if文分岐がうまくできない

#4

投稿記事 by たいちう » 15年前

if文の直前に次の行を入れて結果を教えて下さい。
printf("n = %d, a = \"%s\"\n", n, a);

にのさん

Re:if文分岐がうまくできない

#5

投稿記事 by にのさん » 15年前

H2
n = 1, a = "H2
"
ok

okはifが真の時にでるものですがなぜかでました
ほかのとこに原因がありそうです。ほかの原因を探してみます。
たいちうさんありがとうございました。

Dixq (管理人)

Re:if文分岐がうまくできない

#6

投稿記事 by Dixq (管理人) » 15年前

if文のところ、イコールは付いていますか?

if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')

それでも解決しないようなら、一度プログラムコードを投稿されてはいかがでしょうか?

ookami

Re:if文分岐がうまくできない

#7

投稿記事 by ookami » 15年前

「解決!」になっていたのでスルーしてましたが、続きそうなので私からも。

"2 "ではダメで"H2 "では意図どおりということは、n=0の場合をチェックしていないのではないかと思ったのですが、いかがでしょうか。

たいちう

Re:if文分岐がうまくできない

#8

投稿記事 by たいちう » 15年前

なぜ2つめの"が改行後に表示されるのでしょうか?
私の書いた¥マークが\になっているので判りにくかったかもしれませんが、
一応確認して再度実行したほうが良いと思います。

たかぎ

Re:if文分岐がうまくできない

#9

投稿記事 by たかぎ » 15年前

> 私の書いた¥マークが\になっているので判りにくかったかもしれませんが、

本来は逆斜線(バックスラッシュ)であるべきで、円記号の方が文字化けなのですが、あまり知られていないんですかねえ。

閉鎖

“C言語何でも質問掲示板” へ戻る