私はエンジニアでありたい

インプットしたら、アウトプット

プログラム行数カウンターを作る#6

今日は有給休暇をいただきました。体調不良とかではないです。
仕事から離れて、ボォーっとする時間を定期的に作りたい人間なんですよね。

ボォーっとする時間を作りたい、とは言いつつも、
一日なにもしない、というのは気が引けたので、ブログ書こうってなりました。

 

前回に引き続き、出来たこと以下2点について、順番に話していこうと思います。

  • programRowCounter.exeに渡されたファイルの種類を判定
  • programRowCounter.exeを実行した時刻を取得

(programRowConter.exeは、以降、実行ファイルと呼んでいきます)

 

 

 

実行ファイルに渡されたファイルの種類判定は、ファイル拡張子から判断しています。


具体的な処理の流れとしては、
getFileExtension関数で、拡張子(文字列)を取得し、
getFileType関数で、取得した拡張子からファイルの種類を判定しています。

 

って、言い切るのがシンプルなんですが、
関数の処理内容を詳しくみると、実はちょっと違います。(ブログ書いてて気づく)

ファイルの種類判定のための関数

getFileExtension関数は、実行ファイルに渡したファイルの拡張子(文字列)を取得して、
取得した拡張子を、FILE_DATA構造体のfextensionに登録しています。

getFileType関数は、fextensionに登録されている拡張子(文字列)を参照して、
予め実行ファイルに渡されることが想定されているファイルの種類に該当すれば、
そのプログラミング言語の名前(文字列)をFILE_DATA構造体のftypeに登録しています。

FILE_DATA構造体

まぁ、、、要するに、
関数名と実際の処理内容が厳密には一致していない、ってことです。

getFileExtension関数がgetFileType関数の中でしか使われない保証があれば、
getFileType関数を呼べば、呼び出し側はファイルの種類が何かは分かります。
まだいい気がします。

ただ、getFileExtension関数が単体で呼ばれると、エラー処理に引っかからなければ、
結果的に呼び出し側は何も得られません。
(ファイル拡張子を取得できると関数名に記されているにも関わらず。)

 

反省ですね。
当たり前ですが、関数名と処理内容が一致しているかの確認は重要。

 

 

 

続いては、programRowCounter.exeを実行した時刻を取得の処理です。

現在時刻を取得する関数

C言語の標準ライブラリにtime.hがあり、そちらをベースに実装しました。
コメントに書いたこと以外は、特に追及することはない気がします。

 

 

 

とりあえず、進捗についての話はこんな感じです。
ここまでで、CSVファイルに記録する情報は出そろったように思えます。

 

 

 

次回は、これまで取得した情報をCSVに記録する処理部分について書いていきます。
とはいえ、、、まだCSV出力の処理部分は何も実装もしていないので、
次のブログ更新はいつになるかな…。

 

今日はここまで。