main関数の引数 argc, argv

アルゴリズムとデータ構造
補足資料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);
}