関数main
mainの戻り値
- コマンドラインの引数をプログラムに渡す方法がある
- mainが呼び出された時に、
- 引数の個数を表す整数(argc: argument count)
- 引数文字列へのポインタの配列のアドレス(argv: argument vector)
が渡される
- ANSI Cではargv[argc]がNULLであることが保証されている
- コマンドラインからmyechoコマンドに引数としてHelloとWorldを入力した例:
/* コマンドラインの引数をエコー(画面に表示)する */
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for( i = 1; i < argc; i++ )
printf("%s\n", argv[i]);
return(0); /* exit(0)でも良いし、無くても良い */
}
/* end of myecho0.c */
- 本物のechoコマンドのように全ての引数を一行に表示するには...
/* コマンドラインの引数をエコー(画面に表示)する */
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for( i = 1; i < argc; i++ )
printf("%s%s", argv[i], (i < argc-1) ? " " : "" );
printf("\n");
return(0); /* exit(0)でも良いし、無くても良い */
}
/* end of myecho.c */
- 条件式(式 ? 式 : 式)について調べよう!
- argvはcharへのポインタへのポインタだから...
/* コマンドラインの引数をエコー(画面に表示)する */
#include <stdio.h>
int main(int argc, char *argv[])
{
while( --argc > 0 )
printf("%s%s", *++argv, (argc > 1) ? " " : "" );
printf("\n");
return(0); /* exit(0)でも良いし、無くても良い */
}
/* end of myechop.c */
- while文の中の --argc を argc-- としたらどうなる?
- printf() の引数の *++argv を *argv++ としたらどうなる?
- 引数だけでなく、argv[0]すなわちコマンドそのものも表示してみよう!
例
wfcl 8 6
/* コマンドライン引数で与えたサイズの白旗を画面に表示する */
#include <stdio.h>
int main(int argc, char *argv[])
{
int yoko, tate, i, j;
if( argc < 3 )
return(1);
sscanf( argv[1], "%d", &yoko );
sscanf( argv[2], "%d", &tate );
for( j = 0; j < tate; j++ )
{
for( i = 0; i < yoko; i++ )
printf("□");
printf("\n");
}
return(0);
}
/* end of wfcl.c */
- 白旗ではなくチェッカーフラグを表示してみよ!
コマンドラインの練習問題へ