C言語

時代遅れひとりFizzBuzz祭り C言語編

時代遅れひとりFizzBuzz祭り、記念すべき第1回の言語はC言語。最も頻繁に使っている言語をチョイスしてみた。C言語は仕事でメインに使用している言語。というか私の納品するコードの大半はC言語で、他言語からC言語のコードを生成する域には程遠い私は直接C…

「やさしくない」C言語入門書の構想

暫く前に「やさしい」C言語の入門書を探していたので、その反動で「やさしくない」C言語の入門書について考えてみた。一言で「やさしくない」といっても、万人に対してやさしくない本の需要なんて皆無なので、特定の人にやさしくない本を目指すべきだろう。…

scanfでもバッファオーバーフローは防げるけど、悩みが増える

scanf系の関数の%sあたりでバッファオーバーフローを防ぐ方法は結構メジャーな(つまり世間的にありふれていてネタにもならない)ネタだと思っていたのだけど、例えばこんなページが存在していることから推測するに、そうではないらしい。どうも世間では「sc…

固定長テキストデータを読み込む

どう書く?orgを眺めていて、固定長テキストデータを読み込む方法の問題を見つけた。試しに書いてみたけど、アカウントを持っていないし、何より2008/03頃のお題なので今さら投稿するのも微妙なのでここに晒しておく。特徴はこんな感じ。 使用言語はC言語。 …

Win32アプリのコマンドライン引数を解析するラッパー関数を書く

コードは id:eel3:20090207:1233932887 で既出だけど、一応分けて書いておく。 問題編 普通にC言語のアプリ(Visual C++で言うところのWin32コンソールアプリ)を書く場合、コマンドライン引数は個別にargvに格納される。Win32アプリでアプリケーションエン…

C言語の入門書を読む:『情報処理技術者テキスト プログラミング入門 C言語』の補足

こんなこと一般常識*1だし、既に沢山の人が言及してると思うけど、補足しておく。以下、ANSI規格やANSI C規格と書いてあったら、特に断りの無い限りANSI C89を意味すると思って欲しい。 *1:じゃなかったらどうしよう……いやそんなことはないか。

C言語の入門書を読む:『情報処理技術者テキスト プログラミング入門 C言語』

『やさしいC 第2版』をチェックし終えたので、次はこの本。プログラミング入門 C言語―情報処理技術者テキスト作者: 浅井宗海,栗原徹,JIPDEC=,日本情報処理開発協会出版社/メーカー: 実教出版発売日: 2005/03/01メディア: 単行本 クリック: 3回この商品を含む…

やっぱりコンパイラの警告レベルは高めに限る、基本的に

あるソフトを実装中にフラグが1つ増えることになった。フラグはenumで定義していた。 /* 諸事情によりダミーのソース */ typedef enum { HOGE_FOO, HOGE_BAR, HOGE_BAZ, /* 新しく追加されたフラグ */ HOGE_INVALID_STATUS } HOGE_STATUS; フラグの追加に合…

C言語の入門書を読む:『やさしいC 第2版』(その2)

id:eel3:20081221:1229869888 の続き。

C言語の入門書を読む:『やさしいC 第2版』

諸事情により今更ながらC言語の入門書を色々と漁っている。それも簡単なやつ。基準は(曖昧且つ主観的だけど)こんな感じ。 プログラミング入門も兼ねている。 プログラミング初心者が途中で投げ出してしまわない程度に分かりやすい。 上記目的の為にオミッ…

大量のコメント

仕事で私が書いたソフトの中に13000行強のファイルがあったのだが、ある人がツールでコメントと「#if 0」を取り除いたところ、8000行強になったらしい。……別に行数でお金を頂く仕事ではないし、古いコードをコメントアウトしてた訳でもない*1。この約5000行…

死にたくなるほど間抜けなバグに振り回される(その2)

要するに「短整数から整数への格上げに気をつけよう」ということなのか?

死にたくなるほど間抜けなバグに振り回される

何のことはない、自分の書いたコードがスタックを破壊していたという、CやC++ではありがちなパターンに悩まされたという、ただそれだけ。

私がfscanfよりも「fgets + sscanf」の組み合わせを選択する理由についての考察

しばらく前にscanfが忌避される理由についての記事で、「fscanfとsscanfは使い方や場面を間違わなければ十分に使える」と書いた。ところで私がテキストデータを解析して処理するソフトをC言語で書く場合を考えると、基本的に読み込み処理と解析処理は自作す…