タグ

Cに関するagwのブックマーク (151)

  • ln, log, log10 - まじかんと雑記

    一般に、プログラミングにおいて、対数は三種類ある。自然対数と、常用対数と、一般の底の対数だ。問題は、それらの表し方について統一的な決まりがないことだ。 一般的な関数電卓では、ln が自然対数を表し、log が常用対数を表す。そして任意の底についての対数を直接に計算する機能はないことが多い。一方、プログラミングにおける各種ライブラリなどにおいては、log が自然対数を表し、log10 が常用対数を表すことが多いような気がする。 というように、表記法が大まかに二つあるので、#Script においてはどうすべきか悩んでいる。 任意の底の対数については、log という名前の関数に二つの引数を渡すという点においてはバライエティがなくても、底と真数のどちらを先にするかという順番の問題がある。 とりあえず、いくつかのプログラミング言語(のライブラリ)について、対数をどのように指定するか調べた結果が次の表

    ln, log, log10 - まじかんと雑記
  • @IT:Linuxで動くリレーショナルデータベース・カタログ(8/9)

    ■製品概要 SQLiteはパブリックドメイン(著作権放棄)として提供されており、無償で入手可能なデータベースだ。ソースコードの改変や第三者への再配布も自由に行える。 ほかのRDBMSと大きく異なるのは、SQLiteがいわゆるクライアント/サーバ構成ではないという点だ。デーモンが常駐するわけでもなく、1データベース1ファイルからなるその構成は、むしろMicrosoft Accessに近いかもしれない。実行プログラム(ライブラリ)からデータベースに対する操作も、ファイルに対する読み書きという形で行われる。また、ユーザーという概念もSQLiteではサポートしておらず、データベースに対するアクセス制御はすべてOSのユーザー属性によって行う。 もっとも、SQLiteが一般ユーザーによる利用を想定したパーソナルデータベースであると断じるのは早計だ。SQLiteの特徴として、公式ページで挙げられている主

    agw
    agw 2006/08/22
    Cによるソースコードを記載。
  • 再入不可能な関数を C で実装する - いやなブログ

    再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ

  • 出力先が端末かどうか調べる。 - 技術メモ帳

    g:subtech:id:secondlife さんのところで、 パイプで受け取るとエスケープシーケンスが消去されてるよ!どうやってんだこれ。 というのがあったので、コメント欄に どうやって実現しているのかを書いていた時に、 すでに回答がされているのに気づいて、 俺は何をやっていたんだ、とショックを受けたのでココに書く。 実は、isatty(fd) という関数があり、 指定したファイルディスクリプタが端末かどうか調べる事が出来ます。 つまり、出力先が端末だったとき、エスケープシーケンスを付加し、 端末ではなく、別のプログラムの標準入力に渡されたときは、 エスケープシーケンスを除去しています。 以下は、 標準出力がターミナルだったときのみ "this is terminal" と出力します。 1 #include <stdio.h> 2 #include <unistd.h> 3 4 int

  • memccpy() で文字列をコピーする - bkブログ

    memccpy() で文字列をコピーする 詳解Unixプログラミングを読んでいたところ、標準入出力ライブラリの章に「この例からわかることは、行単位の関数は memccpy(3) を用いて実装されていることである」という記述がありました。 一瞬、memcpy(3) の誤植かと思いましたが、調べてみると 4.3 BSD で追加された関数ということがわかりました。 glibc に入っているので Linux でも使えます。 マニュアル によると memccpy() は次のような関数です。 書式 void *memccpy(void *dest, const void *src, int c, size_t n); 説明 memccpy() はメモリ領域src からメモリ領域dest に最大でnバイトコピーする。nバイトコピーする前に文字 c が見つかると、そこでコピーを中止する。 返り値 memc

  • Not Found

    See related links to what you are looking for.

  • Amazon.co.jp: 本: ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道

    Amazon.co.jp: 本: ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
  • glibc の fopen() で 'm' オプションを使う - bkブログ

    glibc の fopen() で 'm' オプションを使う 最近の glibc の fopen() には 'm' というオプションがあると知りました。 'm' オプションを指定すると、リードオンリーでファイルを開いたとき、可能な場合、 mmap が内部的に使われるようになります。 次のようなプログラムに対して strace をかけると fgets() の内部的で read システムコールが呼ばれていることがわかります。 #include <stdio.h> #include <assert.h> int main() { char buf[1024]; FILE *fp = fopen("/etc/shells", "r"); // FILE *fp = fopen("/etc/shells", "rm"); // using mmap I/O assert(fp != NULL); f

  • http://shibu.jp/cppreference/preproc_details.html

  • C/C++ リファレンス

    agw
    agw 2006/01/16
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

    agw
    agw 2006/01/05
    ポインタに関する良エントリ。