トップ 一覧 置換 検索 ヘルプ RSS ログイン

C言語の基本的なことの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!文字列を数字に
 atoi(char *)
を使う

!数字を文字列に
 sprintf(buf, "%d", 100);

!現在の日付、時間
time() で 現在日付、時刻を取得し、localtime でtm構造体に入れる。
tm構造体
 struct tm {
   int tm_sec;      /* 秒 [0-61] 最大2秒までのうるう秒を考慮 */
   int tm_min;      /* 分 [0-59] */
   int tm_hour;     /* 時 [0-23] */
   int tm_mday;     /* 日 [1-31] */
   int tm_mon;      /* 月 [0-11] 0から始まることに注意 */
   int tm_year;     /* 年 [1900からの経過年数] */
   int tm_wday;     /* 曜日 [0:日 1:月 ... 6:土] */
   int tm_yday;     /* 年内の通し日数 [0-365] 0から始まることに注意*/
   int tm_isdst;    /* 夏時間が無効であれば 0 */
 };
使用例
 #include <time.h>
 
 int main(){
   struct tm *date;
   time_t now;
   int year, month, day;
   int hour, minute, second;
   
   /* 現在の日時を取得 */
   time(&now);
   date = localtime(&now);
   
   year = date->tm_year + 1900;
   month = date->tm_mon + 1;
   day = date->tm_mday;
   
   hour = date->tm_hour;
   minute = date->tm_min;
   second = date->tm_sec;
 
   printf("%04d/%02d/%02d %02d:%02d:%02d\n",
     year,
     month,
     day,
     hour,
     minute,
     second);
 }

!実行時間を測定
 #include <time.h>
 #include <sys/time.h>
 #include <stdio.h>
 
 double gettimeofday_sec()
 {
     struct timeval tv;
     gettimeofday(&tv, NULL);
     return tv.tv_sec + (double)tv.tv_usec*1e-6;
 }
 
 int main()
 {
     int i;
     int n = 0;
     double t1,t2;
 
     t1 = gettimeofday_sec();
     for (i = 0; i < 100000; i++)
         n *= i;
     t2 = gettimeofday_sec();
     printf("time = %10.30f\n", t2 - t1);
 
     t1 = gettimeofday_sec();
     for (i = 0; i < 10000000; i++)
         n *= i;
     t2 = gettimeofday_sec();
     printf("time = %10.30f\n", t2 - t1);

{{category2 C}}
 }
{{category2 プログラミング言語,C}}