現在の時刻を表示させるプログラムを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で質問しましょう!
似たような質問が見つかりました
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
PIC のデータEEPROMに書き込み...
-
VBAで外部プログラムを非表示で...
-
sendkeysにてALT+CTRL+INSERTを...
-
mutexを使った簡単なサンプルと...
-
exeファイルが開かないのはなぜ...
-
sleep()関数について
-
C++でCtrl+Cを無効化したい
-
プログラミング ソースコード
-
MFC VC++ 6.0 使用
-
VistaでのDEPを無効化したいの...
-
Java JNI C++リンク dll読み...
-
C言語のFFTについて教えてくだ...
-
MACで動く実行ファイルをWindow...
-
バックグラウンドからフォアグ...
-
他のPC上にあるexeを、そのP...
-
秒数を数える(C言語)
-
IT未経験で入社しました。 COBO...
-
終了してもプログラムが実行し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
プログラミング ソースコード
-
MACで動く実行ファイルをWindow...
-
実行時エラー429
-
Windows10でDOSゲーム
-
VB上で実行中の無限ループの止め方
-
他のPC上にあるexeを、そのP...
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
システム資源とは?
-
プロセス間通信について
-
アクセス[ファイルを開かずに、...
-
C言語でプログラムを再起動
-
C言語で途中までしか、プログラ...
-
system関数を使用してsuコマン...
-
終了してもプログラムが実行し...
-
PIC のデータEEPROMに書き込み...
-
実行中の実行ファイルの上書き
-
他の実行ファイルを実行するプ...
おすすめ情報