• 追加された行はこの色です。
  • 削除された行はこの色です。
  • C へ行く。
  • C の差分を削除

[[プログラミング]]

*参考 [#fdb9df5a]
-http://real-c.info
-https://kikakurui.com/x3/X3010-2003-01.html


*目次 [#mc431388]
#contents

*下位ページ [#k8ecbec6]
-このページに下位ページは存在させない。全て[[C++]]に押し付ける。

*mmap [#rd2dff65]
-[[参考>http://www.atmarkit.co.jp/ait/articles/1201/18/news133.html]]
-機能:ファイルとメモリの同一視(仮想メモリ技術)
--読み込み専用なら,メモリから読み出しがそのままファイル読み出しに相当.
--書き込み専用なら,メモリへの書き込みがそのままファイル書き込みに相当.
-メリット
--カーネルとコピープログラムの間でデータのコピーが発生しないので,高速.
--iostreamなんて使うよりはよほど早い.

*printfのバッファクリア [#k14c74e4]
-printfが表示されないときに

 #include <stdio.h>
 #include <stdlib.h>
 int main(void)
    for (i = 0 ; i < 3; i++) {
        printf("*");
        fflush(stdout);
        sleep(1);
    }
 }

*void*のoffset [#k44c5f76]
 #include <stdio.h>
 
 int main(void)
 {
         void* a = (char*)0x01;
         a = (void*)((char*)a + 0x0F);
         printf("%p\n", a);
 }

*non-blocking read [#k2b65101]
-readでO_NONBLOCKよりも,selectでread可能かどうかを見る方がまとも
--RDWRで開けるので,non-blockingしながらwriteもできるので
-[[man select>http://www.gnu.org/software/libc/manual/html_node/Waiting-for-I_002fO.html#Waiting-for-I_002fO]]

*低位関数のエラー [#p385df38]
-errnoに出力される
-表示の方法
--perror(問答無用で標準出力に出てしまう)
--strerror(char*となるので,その後どうにかできる)

*日付からUNIX TIMEを得る [#a2e06324]
 #include <ctime>
 #include <cstdio>
 #include <cmath>
 
 int main(void)
 {
     int y = 2015;
     int m = 5;
     struct tm t;
     time_t timer;
     timer = mktime(&t);
     for (int d = 3; d < 30; d++) {
         t.tm_year = y - 1900;
         t.tm_mon = m - 1;
         t.tm_mday = d;
         t.tm_hour = t.tm_min = t.tm_sec = 0;
         timer = mktime(&t);
         printf("%d %d (%ld)\n", d, (int)round((double)timer/60/60/24), timer);
     }
 }


*ブラウジング [#o1887f44]
-curlとlibxmlを使う.
-ログイン情報は,httpクッキー情報を付記する必要がある(超面倒)

*sprintfの型は非常に厳密 [#l063f779]
-sprintfの型は非常に厳密で,1と1.0の違いで数字化けを起こすので要注意


*文字列検索と文字列分解 [#s7e8a174]
-"1:100H2"もしくは"1:100"が入力の文字列ttargから100と2を抽出するかっこいい方法

 char* s = "1:100H2";
 
 double r0, Rh;
 char* colon;
 if((colon = strstr(s, ":")) != 0)
     if(strstr(colon+1, "H") != 0)
         sscanf(colon+1, "%lfH%lf", &r0, &RH);
     else
         sscanf(colon+1, "%lf", &r0);

*数学関数の速度 [#gdda06c8]
-sin, cosは四則演算20個に相当

*inline [#df982e15]
-inlineは適当な深さまで展開して、きついところはそのままにする
-ループアンローリングみたいなことをやってる

*演算子の優先順位 [#t1a1418f]
-評価順序が規定されているのは、論理演算子  (&& ||)、カンマ演算子、条件演算子だけ

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS