人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語の質問です。(初心者なのでわかりやすくお願いします。)
時刻文字列”YYYY/mm/dd hh:mm:ss”をchar time[14]に格納する方法
またその逆の方法(char time[14]から”YYYY/mm/dd hh:mm:ss”に変換)

●質問者: neige_larme
●カテゴリ:コンピュータ 学習・教育
✍キーワード:Char DD MM ss TIME
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● EddyYamanaka
●15ポイント

http://www.funaba.org/en/programming-and-calendar.html

programming and calendar

質問の意味が解りません。

上記 time 変数は char の配列ですよね?

文字列そのものですので、strcpy() でコピーする事になります。…と言う回答があるでしょう。

恐らく質問者は date や time 型を扱うのでしょう。

ここの ctime や asctime を参照してください。

また、上記文字列は[14]には入りません。

19文字+セパレータなので[20]が必要です。

◎質問者からの返答

あ、そうですね。質問の仕方が悪かったです。

時刻文字列中の”/”や”:”や” ”は格納せずに”YYYYmmddhhmmss”と入れたいのです。

また、date timeは諸事情があって使いません。

timeとかを使えればこんなに苦労はしないのですが。。。

すいませんが、再度回答願います。

質問への不備の指摘でもかまいません。


2 ● EddyYamanaka
●15ポイント

http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C...

ここの 13.12 が参考になるでしょう

◎質問者からの返答

すいませんが、上記と同様です。


3 ● aki73ix
●50ポイント

http://www.hatena.ne.jp/1103267957#

人力検索はてな - C言語の質問です。(初心者なのでわかりやすくお願いします。) 時刻文字列”YYYY/mm/dd hh:mm:ss”をchar time[14]に格納する方法 またその逆の方法(char time[14]から”..

1.

int i;//カウント用

char delmit[5][2]={”/”,”/”,” ”,”:”,”:”};//デリミタ

char date[14]=”20041216151215”;//元のデータ

char date2[20],tmp[4]; //結果用とテンポラリ

strcpy(date2,date);

date2[4]=0;

//年のみ転送

for(i=0;i<5;i++){

//デリミタを付加

strcat(date2,delmit[i]);

//追加するのは2桁ずつなので取り出したい場所を2文字ずつ抽出して代入

strncpy(tmp,date+4+i*2,2);

tmp[2]=0;

//それをdate2に連結

strcat(date2,tmp);

}

2.

int i;//カウント用

char date[20]=”2004/12/16 15:12:15”; //元のデータ

char date2[14];//結果用

strcpy(date2,date);

for(i=0;i<5;i++){

//デリミタを付加

//ずらすのは2桁ずつデリミタを含む3文字なので、取り出したい場所を3文字ずつ抽出してコピー

strcpy(date2+4+i*2,date+5+i*3);

}

◎質問者からの返答

ありがとうございます!


4 ● tzk
●50ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

YYYY/mm/dd hh:mm:ss、YYYYmmddhhmmssという形式、文字列長が保証されているのであれば

char date_a[20] = ”2004/12/04 11:28:30”;

char str_a[14];

sprintf(str_a, ”%.4s%.2s%.2s%.2s%.2s%.2s”, date_a, date_a+5, date_a+8, date_a+11, date_a+14, date_a+17);

------------------------

char date_b[20];

char str_b[14] = ”20041122113344”;

sprintf(date_b, ”%.4s/%.2s/%.2s %.2s:%.2s:%.2s”, str_b, str_b+4, str_b+6, str_b+8, str_b+10, str_b+12);

で良いのではないでしょうか。

◎質問者からの返答

保証されてます!ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ