タグ

C言語に関するdrupaのブックマーク (11)

  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
  • C言語:asciiコードの図形文字を列挙するサンプルプログラム

    プログラムコード #include <stdio.h> void main(void) { char c; for (c = '!' ; c <= '~'; c++ ) { printf("%c", c); } } ファイル名:main.c など 実行結果 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 解説 以上のように、ascii コード表の '!' (文字コード:33)から、'~' (文字コード:126)までの、計 94 種類の文字を列挙することが出来ました。 画面上に表示される文字は、プログラム内では”文字コード”という数値データで扱われています。 そのため、for 文という繰り返し処理を行うプログラムによって、文字コードに対して 1 つずつ

    C言語:asciiコードの図形文字を列挙するサンプルプログラム
    drupa
    drupa 2015/03/25
    C言語にて、asciiコードの図形文字を列挙するサンプルプログラムを掲載しています。
  • C言語:アルファベット(小文字)を列挙するサンプルプログラム

    イントロダクション ascii コードの文字を列挙したいということはありますよね。 そんなとき、C 言語などのプログラミング言語を使用すれば、簡単に列挙することができます。 今回は、C 言語で ascii コードのアルファベットの小文字を列挙するサンプルを紹介します。 C言語:asciiコードのアルファベット(小文字)を列挙するサンプルプログラム プログラムコード #include <stdio.h> void main(void) { char c; for (c = 'a' ; c <= 'z'; c++ ) { printf("%c", c); } } ファイル名:main.c など 実行結果 abcdefghijklmnopqrstuvwxyz 解説 以上のように、ascii コード表の 'a' (文字コード:97)から、'z' (文字コード:122)までの、計 26 種類の文字を

    C言語:アルファベット(小文字)を列挙するサンプルプログラム
    drupa
    drupa 2015/03/25
    C言語にて、asciiコードのアルファベットの小文字を列挙するサンプルプログラムを掲載しています。
  • C言語:アルファベット(大文字)を列挙するサンプルプログラム

    イントロダクション ascii コードの文字を列挙したいということはありますよね。 そんなとき、C 言語などのプログラミング言語を使用すれば、簡単に列挙することができます。 今回は、C 言語で ascii コードのアルファベットの大文字を列挙するサンプルを紹介します。 C言語:asciiコードのアルファベット(大文字)を列挙するサンプルプログラム プログラムコード #include <stdio.h> void main(void) { char c; for (c = 'A' ; c <= 'Z'; c++ ) { printf("%c", c); } } ファイル名:main.c など 実行結果 ABCDEFGHIJKLMNOPQRSTUVWXYZ 解説 以上のように、ascii コード表の 'A' (文字コード:65)から、'Z' (文字コード:90)までの、計 26 種類の文字を列

    C言語:アルファベット(大文字)を列挙するサンプルプログラム
    drupa
    drupa 2015/03/25
    C言語にて、asciiコードのアルファベットの大文字を列挙するサンプルプログラムを掲載しています。
  • C言語:数として用いられる文字を列挙するサンプルプログラム

    drupa
    drupa 2015/03/25
    C言語にて、asciiコードのアルファベットの数を列挙するサンプルプログラムを掲載しています。
  • 可変長引数 - Wikipedia

    可変長引数(かへんちょうひきすう、英: variable length arguments、variadic arguments)とはプログラミング言語において、関数(サブルーチンやメソッドを含む)やマクロの引数が固定ではなく任意の個数となっている引数のことである。 可変引数、可変個引数とも呼ばれる。 可変長引数を持つ関数を可変長引数関数(英: variadic function)と言う。 いくつかの言語では型安全が保証されなくなるので注意が必要である。 手法[編集] 可変長引数を取る手続きあるいは関数やメソッドは、多くのコンピュータプログラミング言語でサポートされている。 C言語 - 標準Cライブラリに用意されているstdarg.h(英語版)を使う。仮引数に型の指定は特に行わない。 C# - 配列型の仮引数の直前にparamsキーワードを指定する。 Java - 仮引数の型名と仮引数名の

  • C99 - Wikipedia

    C99は、ISOで定められたC言語の規格である。正式な規格名は ISO/IEC 9899:1999。 歴史[編集] ANSIの標準化プロセス(C89)のあと、C言語仕様はC++が標準化の取り組みによって進化しているのと比べて停滞していた。1995年には標準追補を作成したが、これはC89への細かい修正および国際文字集合対応の追加であった。1990年代の後半にいくつかの訂正を経て、ISO/IEC 9899:1999 として1999年に発行した。この標準は"C99"と呼ばれ、ANSI標準としても2000年5月に受理。国際的なC標準は作業部会ISO/IEC JTC1/SC22/WG14で保守している。 新機能[編集] C99にはさまざまな新機能が導入された。その多くはさまざまなコンパイラによってすでに拡張として実装されていた。 インライン関数 ファイルスコープでない変数宣言がブロックの先頭になけれ

  • C言語で可変長引数をとる関数を、型安全に書く方法

    C言語の可変長引数は、型安全でない(まちがった型の引数を渡してもコンパイルエラーにならない)とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数「sumf」を例にあげて説明します。 C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a

  • Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱

    二十五日半狂乱、6日目(の分...orz)の記事 Cのエラーハンドリングを毎回やるのは面倒だ! 前回も言ったが、Cではエラーハンドリングに戻り値とerrnoを用いる. それはそうと例外設計において"無視"は大罪である. だから、関数を呼び出したら戻り値は漏らさずチェックすべきだ. ということで、例えば以下のように逐一戻り値をチェックする. if(send(sockfd, buf, len, 0) < 0){ ERROR("send"); exit(1); } あぁ、面倒だ. 一体コードのどの部分が正常系の処理なのか? ほとんどエラーハンドリング*1で埋め尽くされるじゃないか. そもそもエラーハンドリング部分に書くのは毎回同じコードだし、コードの繰り返しは防ぎたい. エラー処理部分をラッピングして楽をする unpv12eの中でラッパーを被せることによってこの面倒を回避する方法を知った. in

    Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱
  • 実行するとクラッシュする最短のCプログラムってなんだ? | ソフトアンテナ

    「The Shortest Crashing C Program」にて、最も短く、かつ実行するとクラッシュするCプログラムのソースコードが追求されています。 int main() { return 1/0; } Cプログラマなら誰でも思いつく、ゼロ割り算を利用したプログラムが開始点。その後最終的に、 main; というコードに到達しています。途中の敬意はオリジナル記事を参考にしてください。 実行環境やコンパイラに依存しそうですが、空ファイルを使ったクラッシュプログラムなんてのもあるみたいです。実用性はありませんが、可能性の追求としておもしろいですね。

    実行するとクラッシュする最短のCプログラムってなんだ? | ソフトアンテナ
  • パスワードとmemset関数 - yohhoyの日記

    C言語プログラム上で高機密性情報(パスワード文字列など)を消去するケースで、memset関数の単純利用では機密情報がメモリ上に残存してしまい、セキュリティ上の脆弱性につながる可能性がある。 void secure_operation() { // パスワード文字列を取得 char passwd[128]; get_password(passwd, sizeof(passwd)); //... // メモリ上の高機密データを消去... memset(passwd, 0, sizeof(passwd)); // ?? } 上記コードではパスワード文字列が格納された変数passwdを使用後にゼロクリアしているが、コンパイル時の最適化によりmemset関数呼び出しが削除される可能性がある。この(プログラマの意図に反する)最適化は、C言語の言語仕様上も許容されるコンパイラの振る舞いとなっている。*1

    パスワードとmemset関数 - yohhoyの日記
  • 1