C言語で作る 複数ファイル自動生成プログラム

備忘録 Add comments
このエントリーをはてなブックマークに追加

こんにちは
pinkrootこと兼城です。

私は普段、GTDという手法を用いてタスク管理を行っています。
GTDについてはこちら

で、じゃあ具体的にどうやって管理をしているかということですが、
基本はテキストファイルです。
毎週、週次レビューの度に
List_20110209.txt
Next_20110209.txt
Will_20110209.txt
Wait_20110209.txt
というような4つの新規ファイルを作成し、その中にタスクを書き込んでいます。
前週にやり残した仕事があれば、新しいファイルにコピペします。
現状だと、Listは毎週開いてはコピペして、という感じです。

基本的には上記の方法で困ってなかったのですが、
毎週新たにファイルを作り、名前をつけるのが面倒だなと感じるようになったので、
久しぶりにC言語の知識を呼び覚ましながらプログラム化することにしました。



具体的にやりたいこと

やりたいことはシンプルです。
作成したプログラムファイル(exe)をクリックすると、その日の日付を含んだファイル名で
4つの新規テキストファイルが生成されればいいのです。

というわけで作成

サクっと終わるだろう、と思っていたのもつかの間。
time.hの使い方を失念。
私にC言語を教えてくださった某M教授に申し訳ないです。

というわけでググりながらガリガリ。
結果的に20分程度かかってしまいました(´・ω・)

というわけでソースコード↓

ソースコード file_creator.c



/*******************************************************

2011.02.09 作成
GTD用のファイルを作成するためだけのプログラム

********************************************************/

#include <stdio.h>
#include <time.h>

int main(void)
{
time_t timer;		// 日時を取得するための何か
struct tm *date;		// 日時が格納される構造体らしい
char today_date[9];	// 今日の日付。形式はYYYmmmddd

int i;				// ループ用変数

char filename[4][5] = {"List", "Next", "Will", "Wait"};	// 作成されるファイル名の先頭部
char next_filename[20];						// 次に作成されるファイル名

timer = time(NULL);							// 何かを基準として、そこからの経過時間を取得
date = localtime(&timer);					// 経過時間を、時間を表す構造体dateに変換

strftime(today_date, 9, "%Y%m%d", date);			// dateを元に、YYYYmmddの書式でtoday_dateに格納

//ファイル名の先頭と、今日の日付をくっつけた名前でtxtファイルを作成
for (i = 0; i < 4; i++){
sprintf(next_filename, "%s_%s.txt", filename[i], today_date);
fopen(next_filename, "a");		 	// 追記モードでfopenなので、空のファイルが新規作成される。
}

return (0);
}



むー

time.hを用いて日付を取得するのって、
わざわざ構造体使ったりstrftime使ったりしたっけ?

なんだか冗長なことをやってしまった感もありますが、
無事に動いてるので今回は妥協点ということで。

それにしても
久しぶりに書くとC言語でも忘れまくりですね(´・ω・)
今度ガッツりとリハビリしましょうそうしましょう。

参考にしたサイト

C言語講座:現在時刻と年月日と曜日を表示
お世話になりました。



関連するエントリ

タグ: , , , , , , ,
このエントリーをはてなブックマークに追加

3 Responses to “C言語で作る 複数ファイル自動生成プログラム”

  1. 通りすがり Says:

    バッチファイルなら

    C:\>type test.bat
    copy nul List_%date:/=%.txt
    copy nul Next_%date:/=%.txt
    copy nul Will_%date:/=%.txt
    copy nul Wait_%date:/=%.txt

    と4行ですむかな。

  2. 通りすがり Says:

    こっちの方がバッチファイルっぽいかな。

    C:\>type test.bat
    for %%s in (List Next Will Wait) do copy nul %%s_%date:/=%.txt

  3. 兼城 駿一郎 Says:

    なんとまぁシンプルなこと。
    さすがです。

    こういうのがサクッと思いつける様に日々精進したいと思います。

Leave a Reply

Trackback URL

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン