質問編集履歴
2
削除された内容の復元を行いました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
コマンドラインその2
|
body
CHANGED
@@ -1,36 +1,60 @@
|
|
1
|
-
|
2
|
-
コ
|
3
|
-
|
4
|
-
|
1
|
+
■やりたい事
|
2
|
+
コマンドラインに2個の整数値 n と m が与えられたとき、n から m までの整数数値を順に標準出力に書き出す。 整数値は左詰にし1行として書き出し n > m であれば何も書き出さずに実行を終えること。 コマンド行に引数が2個与えられたのでないときは、 「argc!=3」と左詰にして1行として標準出力に書き出すとともに、 コマンド行に与えられた引数全てを、与えられた順に、 それぞれ左詰にして1行として標準エラー出力に書き出し、 その後でに exit(-1); よって実行を打ち切る。
|
3
|
+
実行例
|
4
|
+
コマンドライン入力
|
5
|
+
1 abc 365
|
6
|
+
標準出力
|
7
|
+
argc!=3
|
8
|
+
標準エラー出力
|
9
|
+
1
|
10
|
+
abc
|
11
|
+
365
|
12
|
+
コマンドライン入力
|
13
|
+
1 0
|
14
|
+
標準出力
|
15
|
+
標準エラー出力
|
16
|
+
コマンドライン入力
|
17
|
+
1 5
|
18
|
+
標準出力
|
19
|
+
1
|
20
|
+
2
|
21
|
+
3
|
22
|
+
4
|
23
|
+
5
|
24
|
+
標準エラー出力
|
25
|
+
■上記に対して自分なりに作成しましたが、思うような出力結果となりません。
|
26
|
+
修正箇所等を教えて頂きたく。
|
5
27
|
```C
|
6
28
|
#include <stdio.h>
|
7
29
|
#include <stdlib.h>
|
8
|
-
|
9
|
-
int main(int argc, char *argv[
|
30
|
+
int main(int argc, char *argv[]){
|
31
|
+
#define LINESIZE 100
|
32
|
+
char line [LINESIZE];
|
33
|
+
FILE *f;
|
34
|
+
int n,x; char rest[LINESIZE];
|
35
|
+
if( argc==1 ) f= stdin;
|
36
|
+
else{
|
37
|
+
f=fopen(argv[1],"r");
|
38
|
+
if( f==NULL ){
|
39
|
+
printf("argc!=3 %s\n",argv[1]);
|
10
|
-
|
40
|
+
exit(-1);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
for(n=1;fgets(line,LINESIZE,f)!=NULL;n++){
|
44
|
+
switch( sscanf(line,"%d%s",&x,rest)){
|
45
|
+
case EOF:
|
46
|
+
case 0:
|
47
|
+
printf("%d\n",0);
|
48
|
+
fprintf(stderr,"%d:%s",n,line);break;
|
49
|
+
case 1:
|
50
|
+
printf("%d\n",x);break;
|
51
|
+
case 2:
|
11
52
|
|
12
|
-
int n;
|
13
|
-
fopen()
|
14
|
-
if( l==NULL ){
|
15
|
-
|
53
|
+
printf("%d\n",x);
|
16
|
-
|
54
|
+
fprintf(stderr,"%d: %s",n,line);break;
|
55
|
+
|
17
|
-
|
56
|
+
}
|
18
|
-
if(
|
19
|
-
else
|
20
|
-
{
|
21
|
-
*
|
22
|
-
|
23
|
-
|
57
|
+
}
|
24
|
-
for(n=1;fgets(,f)!=n++){
|
25
|
-
switch( sscanf(line,"s,rest)){
|
26
|
-
case EOF:
|
27
|
-
|
28
|
-
printf("%d\n",x);
|
29
|
-
fprintf(stderr,"%d: %s",n,line);break;
|
30
|
-
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
|
58
|
+
return 0;
|
35
59
|
}
|
36
60
|
```
|
1
一部変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
出力 入力 検査 計算
|
body
CHANGED
@@ -1,60 +1,30 @@
|
|
1
|
-
|
2
|
-
コ
|
3
|
-
|
4
|
-
|
5
|
-
コマンドライン入力
|
6
|
-
1 abc 365
|
7
|
-
標準出力
|
8
|
-
argc!=3
|
9
|
-
標準エラー出力
|
10
|
-
1
|
11
|
-
abc
|
12
|
-
365
|
13
|
-
|
14
|
-
コマンドライン入力
|
15
|
-
1 0
|
16
|
-
標準出力
|
17
|
-
標準エラー出力
|
18
|
-
|
19
|
-
コマンドライン入力
|
20
|
-
1 5
|
21
|
-
標準出力
|
22
|
-
1
|
23
|
-
2
|
24
|
-
3
|
25
|
-
4
|
26
|
-
5
|
27
|
-
標準エラー出力
|
28
|
-
|
29
|
-
■上記に対して自分なりに作成しましたが、思うような出力結果となりません。
|
30
|
-
修正箇所等を教えて頂きたく。
|
31
|
-
|
1
|
+
循環した整数を計算し出力に書き出すプログラムですが、いまいち内容がよく分かりません。
|
2
|
+
コード自体を書いてみましたが。所何処と間違っていると思われます。
|
3
|
+
詳しい方、細かく教えて下さい。宜しくお願いします。
|
4
|
+
追加・削除箇所も教えて下さい。宜しくお願い致します。
|
32
5
|
```C
|
33
6
|
#include <stdio.h>
|
34
7
|
#include <stdlib.h>
|
35
8
|
|
36
|
-
int main(int argc, char *argv[]){
|
9
|
+
int main(int argc, char *argv[n]){
|
37
|
-
#define LINESIZE 100
|
38
|
-
|
10
|
+
);
|
11
|
+
|
39
|
-
|
12
|
+
int n;
|
40
|
-
int n,x; char rest[LINESIZE];
|
41
|
-
if( argc==1 ) f= stdin;
|
42
|
-
|
13
|
+
fopen()
|
43
|
-
f=fopen(argv[1],"r");
|
44
|
-
|
14
|
+
if( l==NULL ){
|
45
|
-
printf("
|
15
|
+
printf("argv=1 ,d,k);
|
46
16
|
exit(-1);
|
47
17
|
}
|
18
|
+
if(
|
19
|
+
else
|
20
|
+
{
|
21
|
+
*
|
22
|
+
|
48
23
|
}
|
49
|
-
for(n=1;fgets(
|
24
|
+
for(n=1;fgets(,f)!=n++){
|
50
|
-
switch( sscanf(line,"
|
25
|
+
switch( sscanf(line,"s,rest)){
|
51
26
|
case EOF:
|
52
|
-
|
27
|
+
|
53
|
-
printf("%d\n",0);
|
54
|
-
fprintf(stderr,"%d:%s",n,line);break;
|
55
|
-
case 1:
|
56
|
-
printf("%d\n",x);break;
|
57
|
-
case 2:
|
58
28
|
printf("%d\n",x);
|
59
29
|
fprintf(stderr,"%d: %s",n,line);break;
|
60
30
|
|