引数の文字列を数値に変換する
C ではどう書くのだろう、と思ったものの、パっと出てこないので書き残すことにしました。
atoi という関数を使用するようだ。使用するには、stdlib.h を include する必要がある。
#include <stdio.h> #include <stdlib.h> int main(int argc, char *args[]){ if( argc == 2 ){ int x = atoi(args[1]); printf("Command line argument value is %d.\n", x); } else { printf("Usage: %s $Number\n", args[0]); } return 0; }
atoi は、ASCII to Integer の略だろうか。自分の日記を探してみたが、過去使用したことはあるようだ。
実行結果は以下のような感じ。
$ gcc cliargument.c $ ./a.out $ ./a.out 3 Command line argument value is 3. $ gcc cliargument.c $ ./a.out 3 Command line argument value is 3. $ ./a.out aaa Command line argument value is 0. $ $ $ $ ./a.out aaa ddd Usage: ./a.out $Number $ ./a.out Usage: ./a.out $Number $
うーん、数値以外が渡された場合もエラーにしたいので、この方法についても今度調べてみよう。
C のドキュメントは、公式のものかは謎だが以下のサイトがよさそう。
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/
このサイトの Index によれば、atoi 以外にも atof や atol もある。
変換の型が違うものの、文字列(コマンドライン引数)を別の型にする際に
使用する関数だろうと思う。