C言語-コマンドの作成 |
2-5 ntype
【名前】 ntype - 複数ファイルの内容を表示する。
【書式】 ntype [-n] filename1 [filename2 ...]
【解説】 指定された複数のファイルの内容を連続して表示する。オプションとして"-n"を指定すると行番号付きで表示する。オプションは任意の位置に指定できる。
使用例
ntype abc … ファイルabcの内容を表示する。
ntype -n abcd … ファイルabcdの内容を行番号付きで表示する。(ntype abcd -n でも良い)
ntype a1 -n a2 … ファイルa1とa2の内容を行番号付きで表示する。
【参照】 mtype, num
【フローチャート・ソースリスト】
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: |
#include <stdio.h> #include <stdlib.h> #define STRING_MAX 256 /* 最大文字長の定義 */ int main(int argc, char **argv) { FILE *filep; char buff[STRING_MAX]; int count, opt = 0, nn; if(argc < 2){ /* パラメータ数のチェック */ printf("Usage : XTYPE [option] filename1 [filename2 ...]\n"); exit(1); } for(nn = 1; nn < argc; ++nn){ /* オプションのチェック */ if(argv[nn][0] == '-') if(argv[nn][1] == 'n') opt = 1; else{ printf("unknown option -%c\n", argv[nn][1]); exit(3); } } while(--argc){ /* ファイル数分繰り返す */ ++argv; if(**argv == '-') /* オプションのとき */ continue; /* whileへ戻る */ if((filep = fopen(*argv, "r")) == NULL){ /* オープンチェック */ printf("can not open file. %s\n", *argv); exit(2); } count = 0; /* カウンタのクリア */ while(fgets(buff, STRING_MAX, filep) != NULL){ /* 1行読み込み */ ++count; /* 1行加算 */ if(opt == 1) printf("%6d ", count); /* 行数表示 */ printf("%s", buff); /* 1行表示 */ } fclose(filep); /* クローズ */ } return(0); } |
Copyright © 2001 Hiroshi Masuda |