teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

削除された内容の復元を行いました

2020/02/04 05:21

投稿

退会済みユーザー
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[n]){
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
- printf("argv=1 ,d,k);
53
+ printf("%d\n",x);
16
- exit(-1);
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
- return 0;
58
+ return 0;
35
59
  }
36
60
  ```

1

一部変更

2020/02/04 05:21

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- コマンドラインその2
1
+ 出力 入力 検査 計算
body CHANGED
@@ -1,60 +1,30 @@
1
- ■やりたい
2
- マンラインに2個の整数値 n と m が与えられたとき、n から m までの整数数値順に標準出力にき出す。 整数値は左詰にし1行として書き出し n > m であれば何も書き出さずに実行を終えること。 コマンド行に引数が2個与えられたのでなときは、 「argc!=3」と左詰にし1行とて標準出力に書き出すとともに、 コマンド行に与えられ引数全てを、与えられた順に、 それぞれ左詰にして1行して標準エラー出力に書き出し、 その後でに exit(-1); よって実行を打ち切る。
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
- char line [LINESIZE];
10
+ );
11
+
39
- FILE *f;
12
+ int n;
40
- int n,x; char rest[LINESIZE];
41
- if( argc==1 ) f= stdin;
42
- else{
13
+ fopen()
43
- f=fopen(argv[1],"r");
44
- if( f==NULL ){
14
+ if( l==NULL ){
45
- printf("argc!=3 %s\n",argv[1]);
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(line,LINESIZE,f)!=NULL;n++){
24
+ for(n=1;fgets(,f)!=n++){
50
- switch( sscanf(line,"%d%s",&x,rest)){
25
+ switch( sscanf(line,"s,rest)){
51
26
  case EOF:
52
- case 0:
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