簡単な標準出力のプログラム(初級編)
(準備中)
------------------------------------summery-----------------------------------------------------
Very short programs with outputting to simple standard output (screen display).
簡単な標準出力への出力(画面表示)の超ショートプログラムの初級編です。
ごく基礎的なことは基礎編にまとめました。
-------------------------------------------------------------------------------------------------
秒から時間への変換
入力された整数値を、時間、分、秒に変換し hh:mm:ssの形式で出力する
入力値
t
tは0<=t<=86400
出力
hh:mm:ss
hhは時間、mmは分、ssは秒
1ケタの数字の場合は0をパディングし 05のように表示する。
数値を文字列に変換して出力した例
整数値 s,mmod,h をsprintfで文字列ss,mm,hhに変換しています。
if文の中では、一桁だった場合に、ゼロパッディングする処理をしています。
sec2hh.c
#include <stdio.h> #include <string.h> int main(void){ long t; int h,m,mmod,s; char hh[5],mm[5],ss[5]; scanf("%d",&t); s=t % 60; m=t/60; mmod=m % 60; h=m/60; sprintf(ss,"%d",s); sprintf(mm,"%d",mmod); sprintf(hh,"%d",h); if (strlen(ss)==1) { ss[2]='\0'; ss[1]=ss[0]; ss[0]='0';} if (strlen(mm)==1) { mm[2]='\0'; mm[1]=mm[0]; mm[0]='0';} if (strlen(hh)==1) { hh[2]='\0'; hh[1]=hh[0]; hh[0]='0';} printf("%s:%s:%s\n", hh,mm,ss); return 0; }
sprintfの説明
int sprintf(char *str, const char *format, arg);
書式formatに従って変換した出力を文字列strに格納します。
数値を文字列に変換するのに使えます。
char *str 変換した出力を格納する文字列
const char *format 書式指定文字列 (書式指定文字列についてはprintfと変数の型を参照)
arg 引数。format(書式指定)の引数
c:\bcc55\Bin>sec2hh 653 00:10:53 c:\bcc55\Bin>sec2hh 3678 01:01:18 c:\bcc55\Bin>sec2hh 45769 12:42:49
printfのformat文で対応した例
format文で%02dと指定すると2ケタ整数で左にゼロパディングした表示になります。
詳しくはprintfと変数の型を参照
sec2hh2.c
#include <stdio.h> #include <string.h> int main(void){ long t; int h,m,mmod,s; char hh[5],mm[5],ss[5]; scanf("%d",&t); s=t % 60; m=t/60; mmod=m % 60; h=m/60; printf("%02d:%02d:%02d",h,mmod,s); return 0; }
c:\bcc55\Bin>sec2hh2 8 00:00:08 c:\bcc55\Bin>sec2hh2 549 00:09:09 c:\bcc55\Bin>sec2hh2 45769 12:42:49 c:\bcc55\Bin>