苦Cの内容の転載などは自由ですが、苦Cからの引用であることを明記してください。 (どこかに「苦Cより」と書かれていればOKです。) 学校や会社などで生徒(新入社員)へのテキストとして使用することも自由です。 その際、内容を修正したり、印刷して配布するのも自由です。
はじめに 当講座のご案内 本屋さんのコンピュータ言語書籍売場に行くと、いまだに「C言語」関連の書籍が一番多いように思います。いまだにと書いたのはVBやJava、PHP、Ruby、等たくさんの言語が有るにもかかわらずに多いということです。これはどういうことかというと、JavaやPHPはC言語をお手本にして開発された言語なので、C言語を知っていれば、それらの言語をマスターし易いということだと思います。 また、もともとC言語はUNIXオペレーティングシステムを記述することを目的に開発された言語ですので、UNIXをお手本に開発されたLinuxもC言語で記述されています。従って、Linuxをより深く理解しようと思うと、C言語に関する知識が必要になってきます。 この講座では初心者から中級者向けに、易しく説明していきます。また、説明は次の条件で行います。 文法についてはANSI(American Nat
例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機能を駆使して、たった100行のCプログラムでWebチャットシステムを実装してみます。 古式ゆかしいWebチャットシステム 10年くらい前にCGIスクリプトでチャットシステムを作るのが流行していたのを覚えている方も多いと思います。チャットログは現在のようにデータベースサーバに転送して格納するのではなく、ローカルファイルシステム上のファイルにCSVやTSVなどのフォーマットで格納したり、同じくローカルのDBMファイルに格納するのが主流でした。2ちゃんねるの「datファイル」もそのようなデータファイルの一種と言えるでしょう。 その頃から、CGI
OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr
毎週お届けしている本コラムも今年の12月には10周年を迎える。筆者は連載当初から参加しているメンバのひとりであり、10周年かと思うとなかなか感慨深いものがある。この10年を振り返ってという話題はまた別の機会に譲るとして、筆者自身はずいぶんと変化した。そのひとつに「連載当初はバリバリとプログラミングをしていた一方で、最近は自らコードを書くことがめっきり少なくなった」ということが挙げられる。「これが35歳定年説の実体か?」とも思いつつ、それでも先日、とあるプログラムを書くためにコードの森を探検するチャンスが久しぶりにあった。今回はそのときに気がついた「ちょっとしたトピック」を紹介しよう。 C言語によるオブジェクト指向プログラミング 世の中に「オブジェクト指向プログラミング」という考え方がある。古くから提唱されている概念であり、近代的なプログラム言語はほとんどオブジェクト指向でデザインされている
だらだら書くよ 初めてのコード #include <pthread.h> void* f(void* p) { puts("hello"); sleep(1); puts("hello"); sleep(1); puts("hello"); } int main(int argc, char** argv) { pthread_t thread; pthread_create(&thread, NULL, f, (void*)NULL); pthread_join(thread, NULL); } $ gcc p.c -lpthread && ./a.out hello hello hello $おおお。スレッドスレッド みゅーてっくつ #include <pthread.h> // みゅーてっくつ pthread_mutex_t m; void* f(void* p) { int i;
Bjarne StroustrupによるC++のスタイルとテクニックに関するFAQ オリジナル: Bjarne Stroustrup's C++ Style and Technique FAQ ここにまとめられているのは、私がよく尋ねられるC++のスタイルとテクニックに 関する質問です。もしよりよい質問や回答に対するコメントがあれば、遠慮なく私に メール(bs@research.att.com)でお知らせください。なお、ホームページを改善する ために、私はあまり時間を割けないということを心に留めておいてください。 より一般的な質問は、一般的なFAQを 参照してください。 用語や概念については、C++用語解説を 参照してください。 この文書の内容は、質問と回答をまとめただけのものであるということに注意して ください。よい教科書にみられるような、注意深く選ばれた例題と解説の代わりになる もので
C/C++のよく使う構文の覚え書きです。ソースはすべてVisualC++6.0にてコンパイルして動作確認しています。 ミリ秒単位で処理時間を計測する 0〜nの乱数を発生させる 任意の確率で処理を行う 限りなくゼロに近いdouble値をゼロと判定する メモリを動的に確保する コンソールでアニメーション表示を行う printf()のような書式指定ができる関数を作る (橋本なおき:07/02/06) リアルタイム処理の研究とかだと処理時間計測はつきものですね。 #include <stdio.h> #include <windows.h> int main(void) { LARGE_INTEGER freq,time_start,time_end; // 周波数,開始時間,終了時間 QueryPerformanceFrequency(&freq); QueryPerformanceCounte
前回から2回にわたり,C言語によるファイル処理を説明しています。前回は,テキスト・ファイルにシーケンシャルにアクセスして,先頭から順に読み書きする方法を解説しました。バッファを使ったストリーム入出力で効率良くファイルにアクセスできることや,キーボードやディスプレイなどの周辺機器も標準入出力としてファイルのように扱えることを説明しましたね。2回目となる今回は,ランダム・アクセスとバイナリ・ファイルの操作について説明します。まずは,ランダム・アクセスから解説を始めましょう。 ランダム・アクセスはファイルの任意の位置からデータを読み書きする方法で,ハードディスクやCD-ROMのアクセスに似ています。 一つのデータの長さが決まっている固定長のファイルなら,ファイルの中の関連するデータの固まり(レコード)に,どこの位置からでもアクセスすることができて便利です。シーケンシャルにファイルを読み込む場合,
C言語入門、書籍だろうが講議だろうが、この業界なら誰もが通る道ではあるが、 sumiiの日記経由で実に興味深いC言語入門を見付けた。 東京大学理学部情報科学科の学部2年生向けのアルゴリズムとデータ構造演習内でのC言語入門 なのだが、 C入門第1回では、シェルを実装、データを圧縮・解凍するプログラムを実装、スパムフィルタを実装というお題目が並んでいる。 これだけで一瞬ひるんでしまったが、解説PDFを見ると、 「最低でもジョブ管理、リダイレクト、(多段)パイプラインの機能は実装すること」などと書かれている。 UNIXへの理解がかなりないと難しい気がするのだが、これをくぐり抜けてくる学生はどれくらいいるのだろう?
VCで初めてC言語に触れた人にとって、「ソースファイルとヘッダーファイル」という概念はかなーり難しいものだと思います。特に「インクルードしてるのになんで”定義されていない識別子です。”なんて言われるのーっ!?」と苦しんでいる方もいるのではないでしょうか。 そこで、今回はこの2ファイルの関係について見ていこうと思います。 まず「ソースファイル」について見てみましょう。 コンパイラはソースファイルをコンパイルします。コンパイルを行うプログラムCL.exeは、引数としてソースファイルひとつを取り、そのファイルをコンパイルします。つまり「ヘッダーファイル」はコンパイルしません。これが重要。ただし、「インライン関数」と「テンプレート関数」については別。これはあとで解説します。 また、ソースファイルはひとつずつコンパイルされます。複数のソースファイルがくっつけられてまとめてコンパイルされることはなく、
今回のトピックスは、あまり休憩にならないかもしれません。 char 配列と char ポインタの続きになります。 全員が理解していなくても構いませんが、余裕のある人には是非知っておいて欲しいことです。 かなり難しいことも出てきますので、今のところ完全には理解できなくて当たり前のことです。 まず最初は、char 配列の初期化と、char ポインタについてです。 -- リスト20 -- #include <stdio.h> #include <string.h> void main() { char array[7] = "abcdef"; /* char配列の初期化 */ char *ptr = "ghijkl"; /* charポインタの初期化 */ printf("array = %s\n", array); printf("ptr = %s\n", ptr); } 変数の
この講座はC言語及びC++言語を使ったプログラミング初心者講座です。プログラミングとはどういうことをするのか、ということを中心にやっていきます。他の言語でプログラムを組んだことのある人や、c言語をかじったことのある人には退屈かもしれません。 この講座は、習うより慣れろ、細かいことは気にするなという方針でやって行こうと思っています。残念ながら、真っ黒で地味な画面を使ったプログラムしか作りませんが、後でいろんな事に応用可能な基本を押さえる予定ですので、気楽に行きましょう。 このページはもともと物研の新歓用に書かれましたが、内容は一般的に書かれています。それからここでは"Visual C++"を使うことを仮定していますが、わかる人は他のソフトを使われてもかまいません。 このページはリンクフリーです。製作に携わった人のリストは節[製作にかかわった人々]をご覧ください。現在更新作業中であり、内容、場
[戻る] 概要 普段は、コマンドラインのオプション解析は山田君の作ったoption.hを使ってるんだけど、ちょっと目についたので使ってみた。 使い方 #include <stdlib.h> int getopt(int argc, char * const *argv, const char *optstring); argc,argvは通常のmain引数をそのまま渡せばよい。 optstringにオプションの一覧を書く。たとえば、-aというオプションを処理したかったら"a"とする。argumentが付くオプションの場合後ろに:を付ける。必要なものを全部ここに書けばよくて、たとえば"ab:"とすれば、-aと-b argを取り出してくれる。こういう仕様だから、使えるのは1文字だけ 戻り値はoptstringに書いてある最初に引っかかったオプション。何回も呼ぶと次々に取り出してくれる。 戻り値
Copyright (C) 1994-1999 Taiji Yamada <taiji@aihara.co.jp> [戻る] [English Page] [開発者ノート] option.h - オプション解析ルーチン option.h は 以下のような形式でコマンドラインオプションを解析します。 char title[256]; scan_option(argc, argv, "-t %s", title); char name[256]; scan_option(argc, argv, "-n \"%s\"", name); /* since version 3 */ char c; scan_option(argc, argv, "-c %c", &c); int flag; scan_option(argc, argv, "-on[-]", &flag); /* since ver
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く