
現在の時刻を表示させるプログラムをC言語で作成したいのですが、
書籍などを参考に以下のコーディングを行いました。
#include <stdio.h>
#include <time.h>
int main(void) {
time_t timer;
/* 現在の時刻を取得する */
timer = time(&timer);
/* 現在の時刻を出力する */
printf("現在の時刻: ");
printf("%s", ctime(&timer));
printf("です。\n");
return 0;
}
質問内容は以下の通りです。
(1)「time_t timer;」とは、time_t型の変数timerを宣言し、
この変数にはtime()関数で取得した現在時刻の値が入る?
(2)「timer = time(&timer);」に関して、time()関数で取得した値
を変数timerが指すアドレスの場所に入れる? その場合、
返り値を格納する変数timerに、time()関数の引数と同じtimerが
指定されているのはなぜ?
(3)プログラムを実行すると以下の結果となる。(time.exeを実行)
C:\>time
現在の時刻: 12:52:07.61
新しい時刻を入力してください:
現在の時刻を表示した直後に「新しい時刻を入力して下さい」が
表示される。これはtime()関数の仕様どおり?
以上です。初歩的な質問で申し訳ございませんが、ご回答よろしく
お願いいたします。
No.4ベストアンサー
- 回答日時:
★アドバイス
(1)...はい。その通りです。
(2)...単純に時刻を取得して利用する際に2つの方法を取れるということ。
つまり
if ( time(NULL) == time_save ){ … }
としたり
time( &now );
if ( now == time_save ){ … }
という2つの使い方ができるようにしたのかも。
・単純に時刻を取得したいなら戻り値を使い引数はいらない。
変数に現在の時刻を保存してなおかつそのときに時刻を
戻り値で得たい場合には戻り値を何かに使う。
例えば
time_t start;
if ( time(&start) == time_save ){ … }
こんな感じで使える。よって
timer = time( &timer );
という使い方はしない。
(3)...内部コマンドの『time』が実行されました。
プログラム名を変更して実行するとexeのプログラムが実行されます。
他にも『COPY』とか、『REN』という内部コマンドと同じ名前で
自作したプログラム名を付けると先に実行されるのは内部コマンドになります。
なお、拡張子を指定して『time.exe』とすると内部コマンドではなく
自作のプログラムが実行されます。
試して見て下さい。
>これはtime()関数の仕様どおり?
↑
Windows OS(MS-DOS)などの OS 仕様であってC言語のtime()関数の仕様ではありません。
No.3
- 回答日時:
> 書籍などを参考
どの程度読んでおられるのか、わかりませんが、基本的なことが書いて
いないような書籍はあまりよろしくないと思われます。
(1), (2) についてはマニュアルと time.h の中身をご覧下さい。
(3) は Windows 付属の CMD.EXE 内部の TIME が実行されています。
ご自身がどのディレクトリでコンパイルなさったのかを把握されて
おられないのでしょうか?
このコードの実行結果はおそらくこのようになると思われます。
現在の時刻: Sun Apr 13 14:23:00 2008
です。
> C:\>time
この「C:\>」から Windows 環境であることはわかりますが、コンパイラや
OS などの環境についても明確にご提示されることをお薦めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
あるプログラム実行中に別のプ...
-
他の実行ファイルを実行するプ...
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
JavaScriptでレースゲームを作...
-
パソコンの演算速度について
-
実行時エラー429
-
VB6.0 SHELLで起動...
-
スロットゲームのプログラミング
-
フレームワークとプロセスの違...
-
STATUSのZフラグについて
-
CImage::ReleaseDC()のエラーで...
-
「単体テスト」に関する深刻な...
-
このレジの並び方は間違ってま...
-
CreateCompatibleDCを初期化時...
-
プロセスの停止
-
Linuxでのスレッド間メッセージ...
-
ACCESS側からEXCELの書式を設定...
-
VBA kernel32 の意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
パソコンの演算速度について
-
C言語で途中までしか、プログラ...
-
sendkeysにてALT+CTRL+INSERTを...
-
vba GetAsyncKeyState関数について
-
RPG パラメーターについて
-
sleep()関数について
-
Windows10でDOSゲーム
-
実行中の実行ファイルの上書き
-
VBAで外部プログラムを非表示で...
-
終了してもプログラムが実行し...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
VB6プログラムの実行中でのこと
-
アクセス[ファイルを開かずに、...
-
他の実行ファイルを実行するプ...
-
実行時エラー429
-
UWSCがうまく動かない
-
MACアドレスの調べ方
-
”行数のカウント”はどうすれば...
おすすめ情報