こんにちは
date[0] = 0x20;
date[1] = 0x03;
date[2] = 0x01;
date[3] = 0x01;
time[0] = 0x01;
time[1] = 0x01;
time[2] = 0x01;
と設定された、
char date[4];
char time[3];
を引数にして、
string 2003/01/01 01:01:01
をreturnする関数を作成したいのですが、どなたかヒントだけでも頂けますか?
宜しくお願いします。
じゃーヒントだけ、、、
私ならsprintfを使うかな。
0x20 と 0x03 から 2003 を作るのは難しそうだ。
sprintf(buf,%02x%02x,date[0],date[1]);
#include <stdio.h>
#include <string.h>
void main()
{
printf(Test\n);
char date[4];
char time[3];
char buff[1024];
date[0] = 0x20;
date[1] = 0x03;
date[2] = 0x01;
date[3] = 0x01;
time[0] = 0x01;
time[1] = 0x01;
time[2] = 0x01;
int i;
i = sprintf(buff,%02x%02x,date[0],date[1]);
i += sprintf( buff + i, /);
i += sprintf( buff + i, %02x,date[2]);
i += sprintf( buff + i, /);
i += sprintf( buff + i, %02x,date[3]);
i += sprintf( buff + i, );
i += sprintf( buff + i, %02x,time[0]);
i += sprintf( buff + i, :);
i += sprintf( buff + i, %02x,time[1]);
i += sprintf( buff + i, :);
i += sprintf( buff + i, %02x,time[2]);
// i += sprintf( buff + i, \0);
printf(buff = %s\n,buff);
}
こんな感じにしてみたのですが、
何か他に良い方法があったら教えていただけますか?
最後のコメント部はやっぱりいらないですよね?
長いのは好きじゃないので、こんな感じかな。(^_^;
sprintf(buff,%02x%02x/%02x/%02x %02x:%02x:%02x,
date[0],date[1],date[2],date[3]
time[0],time[1],time[2]);
\0は付いてるので、コメント部分は要りません。
最後のカンマが抜けてた。(;_;)
> date[0],date[1],date[2],date[3],
なるほど。
ありがとうございました。
余計なことではあるけど注意点を
日付が12月31日なら
date[2] = 0x12;
date[3] = 0x31;
となるのかな?
今回のものでは問題ないし不整合は起きないけど、
たとえば1月7日の1週間後を求めて出力しようとしたとき
このままだと少し面倒ではないかな?
date[3] = 0x07;
date[3] += 7;
とすると
date[3]は0x0eとなってしまうので、date[3]が0x14になるように計算しないといけない
書かれてないけど、データはBCDで来るのだと私は判断しましたが、、、
http://rararahp.cool.ne.jp/cgi-bin/lng/csharp/csharplng.cgi?
print+200302/03020003.txt
CとC#は別物ですよ。
