回答編集履歴

3

修正

2020/08/12 20:02

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -27,3 +27,5 @@
27
27
  `sscanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
28
28
 
29
29
  `if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。
30
+
31
+ (一つも合致しなかったときの為にsscanfの戻り値のチェックも必要かな)

2

修正

2020/08/12 20:02

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -24,6 +24,6 @@
24
24
 
25
25
  `scanf("%[^\n]", buf);`で一行すべて受け取った後に、
26
26
 
27
- `scanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
27
+ `sscanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
28
28
 
29
29
  `if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。

1

追加

2020/08/12 19:56

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -13,3 +13,17 @@
13
13
 
14
14
 
15
15
  `while(*p)`の前に`p = phoneNum;`として、ポインタの位置を戻してやると良いかと思います。
16
+
17
+
18
+
19
+ ---
20
+
21
+
22
+
23
+ それはそれとして、数字だけを受け取りたいのであれば、
24
+
25
+ `scanf("%[^\n]", buf);`で一行すべて受け取った後に、
26
+
27
+ `scanf(buf,"%[0-9]",phoneNum);`とかして、先頭からの連続した数字だけを読み取り、
28
+
29
+ `if(strlen(phoneNum) != 10)` とかで桁数だけをチェックでOKな気もします。