回答編集履歴
1
コードの部分を組み込みテキストにした。
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
|
質問者様の意図に沿った回答ができているか不安ですので、わからない場合は返信していただければお答えいたします。
|