回答編集履歴

3

ソース追記

2019/04/22 05:48

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -41,3 +41,55 @@
41
41
  if (d==99999)←これも同じインデントになっている?
42
42
 
43
43
  ```
44
+
45
+ 文字列(終端が\0)限定なら
46
+
47
+ ```c
48
+
49
+ #include <stdio.h>
50
+
51
+ #include <ctype.h>
52
+
53
+
54
+
55
+ int numeric_chk(char *str)
56
+
57
+ {
58
+
59
+ while(*str){
60
+
61
+ if(!isdigit(*str)){
62
+
63
+ return -1;
64
+
65
+ }
66
+
67
+ str++;
68
+
69
+ }
70
+
71
+ return 0;
72
+
73
+ }
74
+
75
+
76
+
77
+ int main(void)
78
+
79
+ {
80
+
81
+ char num[] = "1234567890";
82
+
83
+ int ret = numeric_chk(num);
84
+
85
+ printf("%d\n", ret);
86
+
87
+ //
88
+
89
+ return 0;
90
+
91
+ }
92
+
93
+ ```
94
+
95
+ で、いけます。

2

追記

2019/04/22 05:48

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -29,3 +29,15 @@
29
29
  }
30
30
 
31
31
  ```
32
+
33
+ また、
34
+
35
+ ```c
36
+
37
+ else
38
+
39
+ d=atol(&sno);←else節にかかるのはこの行だけですが?
40
+
41
+ if (d==99999)←これも同じインデントになっている?
42
+
43
+ ```

1

追記

2019/04/22 04:33

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -1 +1,31 @@
1
1
  numeric_chk(&sno, 5); ← snoはcharなので1文字です?なぜ5個??
2
+
3
+ また、他の方も言われていますがインデントがおかしいです。
4
+
5
+ 例えば、以下のように式の依存関係がひと目で分かるようにしましょう。
6
+
7
+ ```c
8
+
9
+ int numeric_chk(char *str, int n)
10
+
11
+ {
12
+
13
+ for (int i = 0; i < n; i++) {
14
+
15
+ if ((str[i] >= '0') && (str[i] <= '9')) {
16
+
17
+ continue;
18
+
19
+ } else {
20
+
21
+ return -1;
22
+
23
+ }
24
+
25
+ }
26
+
27
+ return 0;
28
+
29
+ }
30
+
31
+ ```