回答編集履歴
3
修正
answer
CHANGED
@@ -12,4 +12,5 @@
|
|
12
12
|
それはそれとして、数字だけを受け取りたいのであれば、
|
13
13
|
`scanf("%[^\n]", buf);`で一行すべて受け取った後に、
|
14
14
|
`sscanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
|
15
|
-
`if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。
|
15
|
+
`if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。
|
16
|
+
(一つも合致しなかったときの為にsscanfの戻り値のチェックも必要かな)
|
2
修正
answer
CHANGED
@@ -11,5 +11,5 @@
|
|
11
11
|
|
12
12
|
それはそれとして、数字だけを受け取りたいのであれば、
|
13
13
|
`scanf("%[^\n]", buf);`で一行すべて受け取った後に、
|
14
|
-
`
|
14
|
+
`sscanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
|
15
15
|
`if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。
|
1
追加
answer
CHANGED
@@ -5,4 +5,11 @@
|
|
5
5
|
`flg = 1;`の時点で、`if(flg || strlen(phoneNum) != 10)`は、真となり、
|
6
6
|
`needInput = 1;`が実行されてループは継続されます。
|
7
7
|
|
8
|
-
`while(*p)`の前に`p = phoneNum;`として、ポインタの位置を戻してやると良いかと思います。
|
8
|
+
`while(*p)`の前に`p = phoneNum;`として、ポインタの位置を戻してやると良いかと思います。
|
9
|
+
|
10
|
+
---
|
11
|
+
|
12
|
+
それはそれとして、数字だけを受け取りたいのであれば、
|
13
|
+
`scanf("%[^\n]", buf);`で一行すべて受け取った後に、
|
14
|
+
`scanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
|
15
|
+
`if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。
|