FGALDC 15 /RE:19651 RE:秒付きタイムスタンプ出力ツール  こんにちは、Kup さん 》 ああ、秒レベルのタイムスタンプを出してくれるツールって、どこかにない 》のかなぁ。 こういうのって、絶対 BU あたりについていると思ったのですが、意外と存在し ていないのですね。ちょっと探してみたところでは、UNIX-like tools の中に含 まれている ls コマンドが、-e オプションを伴った -l オプションを使えば表示 してくれるようでした。 ただ、まぁ、こんなのはちょっとしたプログラム言語の演習課題のようなもので したので、手持ちのルーチンを使って30分ほどで作ってみました。ここはC言 語部屋じゃない、というおしかりを受けそうですが、大目に見ていただけるとう れしいかな、と。 ------------------------------------------------------------- #include #include #include #include void usage () { fputs("\nUsage: ", stderr); fputs("filetime \n", stderr); exit(EXIT_FAILURE); } char *strright(char *dist, const char *source, const int len) { int i; if (len <= 0 || strlen(source) < len) dist[ 0 ] = '\0'; else{ for (i = 0; i < len; i++) dist[ i ] = source[ strlen(source) - len + i ]; dist[ len ] = '\0'; } return dist; } char *zero_padding(unsigned long data, int len, char *tmp) { char zero[10] = "00000000"; return strright(tmp, strcat(zero, ultoa(data, tmp, 10)), len); } int main(int argc, char **argv) { struct tm *t1; time_t times[2]; char buf[5]; if (argc < 2) usage(); gftime(argv[1],times); t1=localtime(×[0]); fputs(zero_padding( (t1->tm_year>100)?t1->tm_year-100:t1->tm_year,2,buf),stdout); fputs("/",stdout); fputs(zero_padding(t1->tm_mon+1,2,buf),stdout); fputs("/",stdout); fputs(zero_padding(t1->tm_mday,2,buf),stdout); fputs(" ",stdout); fputs(zero_padding(t1->tm_hour,2,buf),stdout); fputs(":",stdout); fputs(zero_padding(t1->tm_min,2,buf),stdout); fputs(":",stdout); fputs(zero_padding(t1->tm_sec,2,buf),stdout); } -------------------------------------------------------------FILETIME.EXE A:\VZ\ORG\VZ.COM 93/12/06 02:00:00 I:\>FILETIME.EXE A:\VZ\VWX.COM 94/01/22 01:08:04 A:\USR\C>FILETIME.EXE FILETIME.C 02/04/02 01:16:52 ま、ろくにエラーチェックもしていないのですが、LSI C-86 でコンパイルしたら 9KB 弱ぐらいの大きさのの実行ファイルが出来上がりました。もし、こんなもの でもよければISH部屋に上げますが、まぁ普通は UNIX-like tools の方を使う のが妥当なところだと思います。                                 としき