4.文字を数字へ

   コマンドへのパラメータは文字列のみです。従って数値をプログラムへ渡すには、
  変換する必要があります。
  まずは、下記の13行を入力してコンパイルして下さい。プログラム名は仮に
  para2num.cとして下さい。

  #include <stdio.h>
  #include <string.h>
  main(int argc, char *argv[])
  {
   int ii, ll,  x = 0;
   ll = strlen(argv[1]);
   for (ii = 0; ii < ll; ii ++)
   {
    x = x * 10;
    x = x + argv[1][ii] - 48;
   }
   printf("パラメータは[%s]です。数値では[%d]です。\n", argv[1], x);
  }

  コンパイルは通りましたか?ちょっと長くなったのでエラーが出た時に迷うでしょう。
  それでは、実行してみましょう。実行する際はパラメータを指定します。
    para2num  123

  いかがですか?
  画面には「パラメータは[123]です。数値では[123]です。」と表示されましたか?
  表示では同じ[123]ですが、実は全然違う物です。
  文字では計算出来ませんが、数値になると計算出来る様になります。

  今回の学習項目
   1)string.h
     文字列を編集する関数が定義されているヘッダーファイルstring.h
     をインクルードします。
     これは、strlenを使用する為です。
   2)strlen
     文字列(string)の長さ(length)を求める関数です。
     従って、argv[1]と言うパラメータで渡された文字列の長さをllと言うint型
     の変数に返します。
     今回は「123」なので「3」文字がセットされます。
   3)for (ii = 0; ii < ll; ii ++) {...}
     繰り返しを表わすループ文の一つで()内の条件でループします。
     左項の「ii = 0;」は初期値を定義します。iiに0をセットします。
     中項の「ii < ll;」は条件式です。iiがllより小さい間と言う意味です。
     この条件が成立する間{}内の処理を実行します。
     右項の「ii ++」はiiをインクリメント(加算)します。
      内容はii = ii + 1と同じで、iiを1だけカウントアップします。
     以上をまとめると、iiと言う変数を使用して初めiiに0をセットします。
     それからiiがllより小さい間ずっと{}内を実行しながら実行する毎に
     iiを1づつカウントアップして条件を比較していく事になります。
   4)x = x * 10;
     xに10をかけます。
     計算式中の*は掛け算を表わします。
   5)x = x + argv[1][ii] - 48;
     argv[1][ii]は1つ目のパラメータの文字列でiiを足した位置の文字です。
     123と言うパラメータを指定した時に、iiが0なら1、iiが1なら2と
     言う意味です。
     - 48は、数字の文字コード(アスキーコードと呼ばれています)の0が48から
     始まり以降123456789と続いている為に48をひく事により数値化が
     出来るのです。
     従って、1はコードで49なので48を引いて1になります。