C言語関係掲示板

過去ログ

No737 システム日付をPackedDecimalで格納したい

[戻る] [ホームページ]
No.9099

システム日付をPackedDecimalで格納したい
投稿者---イギー(2003/08/28 13:18:39)


こんにちは。
time関数で取得した月と日の4桁をPackedDecimalでファイルに出力
したいのですが・・・。
time(&timer);
t_st = localtime(&timer);
この先どうすればいいのでしょう??
すみませんがお願いします

No.9100

Re:システム日付をPackedDecimalで格納したい
投稿者---nop(2003/08/28 13:24:43)


>time関数で取得した月と日の4桁をPackedDecimalでファイルに出力
>したいのですが・・・。
>time(&timer);
>t_st = localtime(&timer);
>この先どうすればいいのでしょう??

PackedDecimal と言うものが良くわからないが、

・fopen() でファイルをオープン
・ストリーム出力関数で月日を出力
・fclose() でファイルを閉じる

と言う手順で良いのでは?

No.9103

Re:システム日付をPackedDecimalで格納したい
投稿者---かずま(2003/08/28 13:51:54)


> time関数で取得した月と日の4桁をPackedDecimalでファイルに出力
> したいのですが・・・。
#include <stdio.h>
#include <time.h>

int put_dec(FILE *fp, int v) { return putc(v/10 << 4 | v%10, fp); }

int main(void)
{
    time_t t = time(0);
    struct tm *p = localtime(&t);
    FILE *fp = fopen("file.dat", "wb");

    if (fp == NULL) return 1;
    put_dec(fp, p->tm_mon + 1);
    put_dec(fp, p->tm_mday);
    fclose(fp);
    return 0;
}


No.9104

Re:システム日付をPackedDecimalで格納したい
投稿者---イギー(2003/08/28 14:08:34)


ありがとうございます!
ただ・・・
int put_dec(FILE *fp, int v) { return putc(v/10 << 4 | v%10, fp); }
このへんが何をやっている処理かちんぷんかんぷんで・・・
ほんとにすみません・・・
このへんのこと参考書にのってます??

No.9106

Re:システム日付をPackedDecimalで格納したい
投稿者---ひかる1977(2003/08/28 15:30:54)


fopen()とか使用して良いのなら、
fprintf()でフォーマット指定して書き込めば宜しいと思います。

void main(void)
{
    time_t              timer;
    struct tm          *tm;
    FILE               *fp;

    time( &timer );
    tm = localtime( &timer );

    fp = (FILE *)fopen( "date.dat", "w" );
    fprintf( fp, "%02d%02d\n", tm->tm_mon+1, tm->tm_mday );
    fclose( fp );

    return;
}


No.9107

Re:システム日付をPackedDecimalで格納したい
投稿者---イギー(2003/08/28 16:21:24)


ファイルへの出力の仕方は大体わかりました。
どうもありがとうございます。

ただ、4バイトのchar型の値を2バイトのchar型に圧縮して入れる方法がわかりません。
たとえばHEXで
3 3 3 3
0 2 1 6

0 1
2 6
と変換して格納するにはどうすればいいのでしょう・・・
ほんとにいろいろすみません。

No.9112

Re:システム日付をPackedDecimalで格納したい
投稿者---かずま(2003/08/28 18:30:24)


> int put_dec(FILE *fp, int v) { return putc(v/10 << 4 | v%10, fp); }
> このへんが何をやっている処理かちんぷんかんぷんで・・・
> ほんとにすみません・・・
> このへんのこと参考書にのってます??
 
この掲示板のホームページ「初心者のためのポイント学習C言語」だと、
int put_dec() { } (関数の定義の仕方) と return は「第11章 関数」に、
FILE と putc は「第17章 ファイル入出力」に、
/ と % は「第3章 基本的な演算子」に、
<< と | は「第14章 複雑な演算子」にあります。