■やりたい事
コマンドラインに2個の整数値 n と m が与えられたとき、n から m までの整数数値を順に標準出力に書き出す。 整数値は左詰にし1行として書き出し n > m であれば何も書き出さずに実行を終えること。 コマンド行に引数が2個与えられたのでないときは、 「argc!=3」と左詰にして1行として標準出力に書き出すとともに、 コマンド行に与えられた引数全てを、与えられた順に、 それぞれ左詰にして1行として標準エラー出力に書き出し、 その後でに exit(-1); よって実行を打ち切る。
実行例
コマンドライン入力
1 abc 365
標準出力
argc!=3
標準エラー出力
1
abc
365
コマンドライン入力
1 0
標準出力
標準エラー出力
コマンドライン入力
1 5
標準出力
1
2
3
4
5
標準エラー出力
■上記に対して自分なりに作成しましたが、思うような出力結果となりません。
修正箇所等を教えて頂きたく。
C
1#include <stdio.h> 2#include <stdlib.h> 3int main(int argc, char *argv[]){ 4 #define LINESIZE 100 5 char line [LINESIZE]; 6 FILE *f; 7 int n,x; char rest[LINESIZE]; 8 if( argc==1 ) f= stdin; 9 else{ 10 f=fopen(argv[1],"r"); 11 if( f==NULL ){ 12 printf("argc!=3 %s\n",argv[1]); 13 exit(-1); 14 } 15 } 16 for(n=1;fgets(line,LINESIZE,f)!=NULL;n++){ 17 switch( sscanf(line,"%d%s",&x,rest)){ 18 case EOF: 19 case 0: 20 printf("%d\n",0); 21 fprintf(stderr,"%d:%s",n,line);break; 22 case 1: 23 printf("%d\n",x);break; 24 case 2: 25 26 printf("%d\n",x); 27 fprintf(stderr,"%d: %s",n,line);break; 28 29 } 30 } 31 return 0; 32}