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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
おならちゃん。

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

#1

投稿記事 by おならちゃん。 » 14年前

僕はいま自作関数を使って時間を取得しようとしましたが、
特に自作関数を使う意味はないのですが、
時間の差を求めようとおもい途中ですがここまで書いてみたのですが、
エラーが出てしまい思ったとおりに動作しないという状態に陥ってしまったので、
トピックを立てさせていただきました。
エラーがなおったら 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;
}
サンプルプログラムをいじっていったプログラムなので、自作関数をはさんだことで何か問題が起きているとおもっています。

よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 14年前

問題は関数の戻り値や引数の値渡しの意味を理解されていない所にあります。
getime()の戻り値を利用していないので、time(NULL)の値は消滅しています。
あとgetime(time_t timer)でgetimeのtimerは値渡しなので、main側のtimer変数と値以外の関係がなくgetimeのtimerを更新してもgetime終了時に破棄されています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

おならちゃん。

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

#3

投稿記事 by おならちゃん。 » 14年前

ご回答ありがとうございます!!!
指摘していただいたところを見直すことによって無事問題が解決しました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 14年前

解決チェックと解決内容の投稿をお願いします。
ここのルールとなっております。 http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る