ページ 11

自作関数を使って時間の取得がうまくいきません。

Posted: 2012年2月02日(木) 13:14
by おならちゃん。
僕はいま自作関数を使って時間を取得しようとしましたが、
特に自作関数を使う意味はないのですが、
時間の差を求めようとおもい途中ですがここまで書いてみたのですが、
エラーが出てしまい思ったとおりに動作しないという状態に陥ってしまったので、
トピックを立てさせていただきました。
エラーがなおったら difftimeで差を求めようと思っています。
僕の書いてみたプログラムはこちらです、使っているのはC++ 2008です。

コード:

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

time_t getime(time_t timer){
	timer = time(NULL);
	return timer;
}
int main(){

	time_t timer,t1;
	struct tm *date;
	char str[256];

	getime(timer);
	date = localtime(&timer);
	printf("%s\n",asctime(date));

	strftime(str,255,"%Y,%B,%d,%A %p%I:%M:%S",date);
	printf("%s\n",str);

	return 0;
}
サンプルプログラムをいじっていったプログラムなので、自作関数をはさんだことで何か問題が起きているとおもっています。

よろしくお願いします。

Re: 自作関数を使って時間の取得がうまくいきません。

Posted: 2012年2月02日(木) 13:21
by softya(ソフト屋)
問題は関数の戻り値や引数の値渡しの意味を理解されていない所にあります。
getime()の戻り値を利用していないので、time(NULL)の値は消滅しています。
あとgetime(time_t timer)でgetimeのtimerは値渡しなので、main側のtimer変数と値以外の関係がなくgetimeのtimerを更新してもgetime終了時に破棄されています。

Re: 自作関数を使って時間の取得がうまくいきません。

Posted: 2012年2月03日(金) 00:08
by おならちゃん。
ご回答ありがとうございます!!!
指摘していただいたところを見直すことによって無事問題が解決しました。

Re: 自作関数を使って時間の取得がうまくいきません。

Posted: 2012年2月03日(金) 00:13
by softya(ソフト屋)
解決チェックと解決内容の投稿をお願いします。
ここのルールとなっております。 http://dixq.net/board/board.html