アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志 main関数の引数 argc, argv main(int argc, char *argv[]) { … } main関数の引数 argc, argv main(int argc, char *argv[]) { … } コマンド名: echo 第1引数: hello, 第2引数: world の場合: % echo hello, world [enter] main関数の引数 argc, argv main(int argc, char *argv[]) { … } argv argv[0] e c h o \0 argv[1] h e l l o , argv[2] w o r l d \0 コマンド名: echo 第1引数: hello, 第2引数: world の場合: argv[3] % echo hello, world [enter] 0 \0 main関数の引数 argc, argv main(int argc, char *argv[]) { argc: argument count: 引数の数 … argv: argument vector: 引数の文字列 } e c h o \0 argv argv[0] コマンド名: echo 第1引数: hello, 第2引数: world の場合: argv[1] h e l l o , argv[2] w o r l d \0 argv[3] % echo hello, world [enter] 0 \0 main関数の引数 argc, argv main(int argc, char *argv[]) { argc: argument count: 引数の数 … argv: argument vector: 引数の文字列 } コマンド名: echo 第1引数: hello, 第2引数: world の場合: argv[0]=“echo” argv[1]=“hello,” argv[2]=“world” % echo hello, world [enter] コマンド名の文字列 第1引数の文字列 第2引数の文字列 /**************************************************************** アルゴリズムとデータ構造 サンプルプログラム cat3.c <<ファイルの例: 入力ファイルを出力ファイルにコピー>> copyright (c) 1995,96,97 T.Mori <[email protected]> ****************************************************************/ #include <stdio.h> main(int argc, char *argv[]) { int c; FILE *infp,*outfp; 慣用表現なので、 覚えてしまおう! if (argc != 3) { /* 引数の数が合わない時は,使い方を表示 */ fprintf(stderr,"Usage: %s inputfile outputfile\n", argv[0]); exit(1); } else { if ((infp = fopen(argv[1],"r")) == NULL) { /* 入力ファイルが開けない場合はエラー */ fprintf(stderr,"%s: %s: No such file or directory\n", argv[0],argv[1]); exit(1); } else if ((outfp = fopen(argv[2],"w")) == NULL) { /* 出力ファイルが開けない場合はエラー */ fprintf(stderr,"%s: Cannot open %s\n", argv[0],argv[2]); exit(1); } else { while ((c = getc(infp)) != EOF) /* EOFが現れるまで入力ファイルから文字を読み */ putc(c,outfp); /* 出力ファイルに書き込む */ fclose(infp); /* 各ファイルを閉じる */ fclose(outfp); exit(0); } } exit(0); }
© Copyright 2024 ExpyDoc