タグ

Cに関するkenjiro_nのブックマーク (153)

  • strtok(区切り文字による文字列の切り分け) - ICPC突破専用ザク

    STLのstringで,str="100 200 400"のような文字をスペースで切り分けて,a=100,b=200,c=400...のようにしたいことがある. この場合,str.split(" "); のようにすれば適当に切り分けてvectorにでも出力してくれるんじゃないかと思っていたのだけど,調べたところsplitのようなものはどうも無いっぽく,代わりにCでstrtokという関数があるそうなのでこれを利用する. (stringから使う場合は(char*)str.c_str();する) strtokはstring.hの関数で,以下のような挙動をする. http://www9.plala.or.jp/sgwr-t/lib/strtok.html 【書式】 #include char *strtok(char *s1, const char *s2); 【説明】 分解対象文字列 s1 を、

    strtok(区切り文字による文字列の切り分け) - ICPC突破専用ザク
  • feof関数でwhileループを回す奴はド素人 - hnwの日記

    (2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があったので、整理しました stackoverflowの記事「“while( !feof( file ) )” is always wrong」をざっくり翻訳してみます。これはWilliam Pursellさんによる自作自演スレ(回答者も人)で、Cでwhile( !feof( file ) )というループを作るのが悪い理由を説明するものです。 ちなみにPHPについてもほぼ同じことが言えますので、PHPプログラマの方にも一読をお勧めします(PHPの主要なファイル操作関数はCとほぼ同じインターフェース

    feof関数でwhileループを回す奴はド素人 - hnwの日記
    kenjiro_n
    kenjiro_n 2014/12/26
  • TCC : Tiny C Compiler

    News [Note: I am no longer working on TCC. Check the mailing list to get up to date information.] Features SMALL! You can compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker). FAST! tcc generates x86 code. No byte code overhead. Compile, assemble and link several times faster than GCC. UN

  • C言語/C++ プログラミング 入門

    C 言語は 1972年にUSの有名なベル研究所で Dennis Ritchie らが設計・実装した言語だ。 今となっては低水準な言語だが、充分な機能、簡潔な記法とアセンブラに近いパフォーマンスを持ち、 Unix, Windows, Linux 等の OS をはじめ、コンパイラ、テキストエディタ等のツールや、ビジネスアプリやゲームなど多くの各種アプリケーション開発に用いられてきた。 C++ 言語は 1980年頃、やはりベル研究所の Bjarne Stroustrup が開発したもので、C にオブジェクト指向などの機能を追加したものだ。 C との互換性を維持しつつオブジェクト指向が可能で、パフォーマンスも高かったことから、 1990年頃から、ビジネスアプリやゲームなど多くのアプリケーション開発に使用されるようになった。 C++ は、過去の互換性を維持しつつ最先端のプログラミングパラダイムを多く

  • 問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ

    問.Cでオブジェクト指向プログラミングを行なえ。ただし「オブジェクト指向プログラミング」とは、次のような特徴を持つプログラミング技法であるものとする: オブジェクトの実装はオブジェクトのユーザーからは隠蔽される(カプセル化/隠蔽) 同一型のオブジェクトと同一メソッドを与えた時、実際のメソッドの動作はオブジェクトの内容により変化する(ポリモーフィズム/多態性) なお、ユーザーが既存のオブジェクトをカスタマイズして新たなオブジェクトを作成する機能は、必要ないものとする。 この問いの狙い よく、「オブジェクト指向プログラミング」と「オブジェクト指向言語」は混同されます。が、前者はプログラムを設計する上での考え方で、後者はその考え方を容易にソースコードに書けるような仕様になっている言語の事で、全く違うものを指しています。 その証拠を示すため、「非オブジェクト指向言語」たるC言語で「オブジェクト指向

    問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ
  • C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog

    はじめに こんにちは、Go界のシャールト・コプリーです。気がついたら最後のエントリから3ヶ月も経ってました。 Goを始めると「なんでこういう書き方になってるんだろう」とか、「そもそもなんでこういう仕様になってるんだろう」とか思うことがちらほらあると思います。これは大いにGoの作者の一人であるRob Pike氏の思想に依るところがあるのが見受けられます。彼のプログラムに対する考え方が25年前に公開され「Pike Style」として知られていますが、いまもその考え方は大きくは変わっていないと思われます。せっかくなので翻訳しました。文はC言語に関する文章ですがその質は言語に依らないものだと思います。 Notes on Programming in C (追記)25年前なのでコンパイラの動作に依存する部分(includeに関する記述)などは古い部分もありますが、プログラミングスタイルに関する部

    C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog
  • sprintf を最大10倍以上高速化するプリプロセッサ「qrintf」を作った

    最近H2OというHTTPサーバを書いているのですが、プロファイルを取ってみるとsprintfが結構な時間をっていて不満に感じていました。実際、sprintfは数値や文字列をフォーマットするのに十徳ナイフ的に便利なので、HTTPサーバに限らず良く使われる(そしてCPU時間を消費しがちな)関数です。 では、sprintfを最適化すれば、様々なプログラムが より高速に動作するようになるのではないでしょうか。ということで作ったのが、qrintfです。 qrintfは、Cプリプロセッサのラッパーとしてソースコードに含まれるsprintfの呼出フォーマットを解析し、フォーマットにあわせたコードに書き換えることで、sprintfを高速化します。 たとえば、以下のようなIPv4アドレスを文字列化するコード片を sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf

  • Cプログラミング診断室

    はじめに 開院準備 昔むかし/ レベル差/ 教育/ ネットワーク/ 情報集め/ 隠すことについて/ プログラムコンテスト/ ドキュメント/ 楽するように/ 手抜きと下手の違い/ 開院 第1部 外来 第1章 普通の初心者 最初から充実した(!?)プログラムが登場 関数を短くし、コメントを改善する 上手になる秘訣/ プログラムの紹介/ 何だ、このプログラムは!!/ 短くするには/ コメントについて/ 無駄な努力をやめよう/ 名前/ 気になる個所/ 修正プログラム/ 課題/ まとめ 第2章 これでもプロ 売りものであるにもかかわらず、超きたない! 構造的な欠陥の指摘〜引数、ポインタの活用 プログラムの紹介/ 「超」基的問題点/ 関数分解/ 構造的欠陥/ 引数を使おう/ ポインタ/ その他/ まとめ(修正プログラム) 第3章 上司が問題 まさに驚異的なプログラムの見というべき 内容の修正から、

  • 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の仕様
    kenjiro_n
    kenjiro_n 2014/02/05
  • 本の虫: Clang VS 自由ソフトウェア

    オープンソースで有名なEric S. Raymondが、自由ソフトウェアで有名なRichard Stallmanに、GCCのアンチプラグインポリシーについて突っ込んでいる。 GCCは、長年、コンパイラーのモジュール化を政治的な理由で行っていなかった。もし、例えばパーサーや意味解析だけを分離して使えるようにしたり、内部表現を規格化したりしてしまうと、GCCの一部が、不自由なソフトウェアに取り込まれたり、あるいは不自由なソフトウェアがGCCのプラグインという形で入り込むことになってしまう。これは、利用者の自由を第一とする自由ソフトウェアにとって、悪夢のような未来である。そのような未来を未然に防ぐために、政治的な理由で、GCCのはプラグインに反対するポリシーを採用している。もし、GCCを改良したければ、自由なソフトウェアとなるべきなのだ。そして、GCCのプロジェクトに参加するべきなのだ。 とはい

  • C言語・C++言語用テスティングフレームワーク - Cutter

    最新リリース 2019-09-13にリリースされた1.2.7が最新です。 [ダウンロード] [変更点] Cutterとは Cutterは書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークです。メンテナンスしやすく、利用効果の高い単体テスト(ユニットテスト)の開発を支援します。 また、テストを苦痛ではなく、楽しいものにすることも重視しています。スクリーンショットはテスト結果の通知機能を利用している様子です。文字としてテストのパス・失敗を伝えるだけではなく、視覚的にも通知することで、テスト結果をわかりやすくします。わかりやすいので、頻繁にテストを実行したくなります。この機能はnotify-sendコマンド(Linuxや*BSDなどの場合)またはgrowlnotifyコマンド(macOSの場合)を利用します。 動作環境 CutterはDebian GNU/L

  • 28歳の俺にC言語を1から教えてじゃんけんゲームを完成させるスレ : IT速報

    1: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 22:00:04 ID:kC+V2XeX0 GCCの準備できてます!頭くそだけどよろしくお願いします! 7: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 22:01:13 ID:vKdW/2mf0 逆かと思って開いたのに… 44: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 22:25:32 ID:nzCWAN6W0 俺も逆かと思って開いたのに 8: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 22:01:29 ID:2FtGig1R0 まず、Hello worldをします 17: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 22:06:46 ID:kC+V2XeX0 >>8 #include <stdio.h>

    28歳の俺にC言語を1から教えてじゃんけんゲームを完成させるスレ : IT速報
    kenjiro_n
    kenjiro_n 2014/01/06
    vimが使えてプログラム作りの何たるかがわからないというのもなかなか見ない。ともかく世の中にこういう人がもう少しいれば住みやすくなるのかもしれない。
  • popt

    poptの使い方 オプション解析ライブラリ. getoptとおんなじだけど,ちょっと違う. 使い方って,流れを見た方が早いことって多いよね. ということで,流れを紹介. というか,manそのまんまなんだけどね. たぶん,スイッチのオプションを解析したあとに, フラッグなしの数字を処理した方がよいと思われる. つまり,poptGetNextOpt(optCon)が先で,poptGetArgが後. 実際に使ってみた例はこっち. ちょっと汚いけど,こんな感じで使うもんなのかな,といったもの. #include <popt.h> #include <stdio.h> /* これつけた方がカッコイイ */ void usage(poptContext optCon, int exitcode, char *error, char *addl) { poptPrintUsage(optCon, std

    kenjiro_n
    kenjiro_n 2013/12/06
    コマンドライン引数の解析を補助するpoptの使い方。
  • II-14-10. ライブラリの利用例2 (オプション解析ライブラリ) | 日本OSS推進フォーラム

    もうひとつのライブラリ利用例として、コマンドラインオプションを解析するライブラリの使い方を紹介する。コマンドラインオプションとは何か、どのようなスタイルがあるかを説明し、コマンドラインオプション解析ライブラリを用いてプログラムからコマンドラインオプションを解析するやり方を説明する。 【学習の要点】 * プログラムの実行時に必要なパラメータを自由に設定できるようにするためには、コマンドラインのオプションとして設定できるようにすることが有効である。 * popt、getoptなどのコマンドラインのオプションを解析するライブラリを用いることで統一性のあるオプション設定処理が実現できる。 図II-14-10. getopt、poptによるオプション解析 【解説】 プログラムの実行時コマンドラインのオプションにてパラメータを受け取るようにする場合、main関数の引数により設定されたオプションを受け取

    II-14-10. ライブラリの利用例2 (オプション解析ライブラリ) | 日本OSS推進フォーラム
    kenjiro_n
    kenjiro_n 2013/12/06
    コマンドライン引数の解析を補助するpoptとgetoptの使い方。
  • Google Sites: Sign-in

  • fchiba's memo libxml2の使い方メモ

    libxml2をC言語で使うときのメモ。 ・parseの仕方はexamplesを参照(たくさん例がある) ・逆にツリーをたどったりするサンプルはほとんどないので、google code searchを頼る。 ・「ある名前を持った子要素を一つ取り出す」という関数はないため、 xmlNode *get_child (xmlNode *node, const char *tag) { xmlNode *child; for (child = node->children; child != NULL; child = child->next) if (!strcmp ((char *)child->name, tag)) return child; return NULL; } のようなユーティリティ関数を多くのプロジェクトで書いている。 ・XPathで相対ロケーションパスを使う場合、コンテキス

  • libxml2チュートリアル - 雑記帳 - Seesaa Wiki(ウィキ)

    [ 一般 ] 雑記帳 編集 履歴 添付 設定 新規ページ作成 メニュー このウィキの読者になる カテゴリー 最近更新したページ 2006-04-18 libxml2チュートリアル XMLメモ 2006-04-16 FrontPage MenuBar1 MenuBar2 Profile Calendar Memo Bookmarks 最新コメント Menu libxml2チュートリアル Libxml Tutorial John Fleck <jfleck@inkstain.net> Copyright © 2002, 2003 John Fleck 1.序文 Libxmlは、XMLデータを解読し、作成し、操作するための、C言語ライブラリです。このチュートリアルはコード例と、その基的な機能性の説明を提供します。 Libxmlとその利用についてのより詳細な情報は、プロジェクトのホームページが利

  • Open Tech Press | Libxml2 を使う

    XML はあらゆる分野における基礎技術となって利用が進みつつあるが、GNOME 環境においても例外ではない。GNOME 2 においては Libxml2 が XML を扱うための基ライブラリとして採用され、あらゆる局面で活用されている。稿ではこの Libxml2 を使った簡単なプログラミング例を紹介しよう。 GNOME と XML GNOME の多くのアプリケーションは設定に関する情報を GConf というフレームワークを利用して保存しているが、この GConf は標準では XML 形式のテキストファイルを利用して情報を保存している。GNOME を利用しているなら、ホームディレクトリにある ~/.gconf/ というディレクトリの中を覗いてみよう。そこの中には %gconf.xml というファイルがいくつも存在しているが、これが GConf によって書き出されたユーザ固有の設定情報である

    Open Tech Press | Libxml2 を使う
  • グーグル、開発ツール「Portable Native Client」を公開

    Googleの「Portable Native Client」(PNaCl)が、ホワイトペーパーでの紹介から3年以上過ぎた米国時間11月12日、開発者に公開された。 PNaCl(「ピナクル」と発音)を使うことで、開発者はCおよびC++コードをコンパイルしてウェブアプリを作成できる。ネイティブコードからウェブへの「翻訳」を簡略化することにより、オーディオおよびビデオ圧縮解除ソフトウェア、画像編集ツール、あるいはビデオゲームを動かす複雑なエンジンなどを独自に作りたい開発者に、多大な恩恵をもたらす可能性がある。 Googleは、PNaClの公開を発表したブログ投稿の中で、PNaClの技術的側面を簡潔に説明した。アプリケーションを再コンパイルしてx86、ARM、MIPSなどさまざまなハードウェアを搭載するデバイス上で実行するという、プロセッサに大きな負荷をかけるタスクを回避するものだとしている。

    グーグル、開発ツール「Portable Native Client」を公開
  • Eclipse | Futurismo