teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードの部分を組み込みテキストにした。

2017/08/02 14:55

投稿

退会済みユーザー
answer CHANGED
@@ -1,6 +1,8 @@
1
1
  まず、C言語で文字列は文字型の配列として扱われ、配列どうしの比較演算は定義されていない事(つまり、文字列同士の比較は==や!=では行えないという事)を念頭に置いて、この後の話を読んでいだたきたいと思います。
2
2
  まず、(int)bufを
3
+ ```C
3
4
  printf("%d\n",(int)buf);
5
+ ```
4
6
  のようにして書き出してみてください。
5
7
  恐らく適当な値(数十万程度)が出力されると思います。
6
8
  それをsと比較すると、絶対に一致するはずのないことがわかります。
@@ -8,6 +10,7 @@
8
10
  ですので、まずはbuf配列の中身を数字として書き出す必要があります。
9
11
  C++を使っているのであれば数ステップで変換できるのですが、C言語だと些か面倒ですので、範囲を1-10に限定したコードを例示します。
10
12
 
13
+ ```C
11
14
  const int ABNORMAL -1;
12
15
  int buf_i;
13
16
  if(strlen(buf)==1){
@@ -19,10 +22,13 @@
19
22
  else{
20
23
  buf_i = ABNORMAL;
21
24
  }
25
+ ```
22
26
 
23
27
  このコードの後に、
28
+ ```C
24
29
  if(buf_i != ABNORMAL){
25
30
  //処理
26
31
  }
32
+ ```
27
33
  などを使って10以外の数値が入力された場合の処理をかけばいいとおもいます。
28
34
  質問者様の意図に沿った回答ができているか不安ですので、わからない場合は返信していただければお答えいたします。