タグ

C言語に関するpn11のブックマーク (18)

  • C言語を使ったコンソールアプリケーションの作成 コマンドラインオプションの解析方法

    はじめに C#やVB.NETを用いることで手軽にGUIアプリケーションが作れるようになったとはいえ、ちょっとしたツールを書くときなどは、手軽さからC言語を使ったCUIのプログラムにしてしまうことが多いのではないかと思います。このようなCUIベースのツールを作るとき、よく使うのに面倒な処理としてコマンドラインオプション(以下オプション)の解析が挙げられます。 そこで稿では、PC-UNIX系の環境でよく使われるgetopt関数をC言語から使う様子を紹介しながら、同様の方法をWindows上で実現するための方法について説明します。 対象読者 C言語を理解していて、getopt関数を使ったオプションの解析方法を知りたいという方 なお、サンプルプログラムはすべてC言語で書かれており、Debian GNU/Linux + gcc 4.3でコンパイルと動作確認を行っています。また、Windows向けに

    C言語を使ったコンソールアプリケーションの作成 コマンドラインオプションの解析方法
    pn11
    pn11 2015/03/30
  • readlineの使い方 - cocoatomo衝動日記〈移行後版〉

    Q. まず何をしたらいいの? A. readline機能とhistory機能を使うために、readline.hとhistory.hをincludeしよう。 #include <readline/readline.h> #include <readline/history.h> Q. どうやって使うの? A. 基の使い方は、関数readlineを呼べばいい。 >>_("_"は半角スペース) このようなプロンプトにして、入力文字列をcommandに代入したければ、 char *command; ... command = readline(">> "); とすればいいよ。readlineの引数がプロンプト記号として標準出力に表示され、 入力されたコマンド文字列へのポインタがcommandに代入されるよ。 (引数は、NULLや空文字""でも可。) [注意] ただし、readline関数はmal

    readlineの使い方 - cocoatomo衝動日記〈移行後版〉
    pn11
    pn11 2015/03/29
  • もう一度基礎からC言語 第47回 特殊な画面制御~コンソール入出力関数とエスケープシーケンス エスケープシーケンスによる画面制御

    コンソールモードのOSには、ANSI(米国標準協会――American National Standards Institute)の制定した画面制御機能が備わっています。これを使うと、文字に色を付けたり、表示位置を変更したりできます。 特殊記号で画面を制御する コンピュータが登場した初期の頃には、さん孔式のカードやテープが基的な入出力でした ※1 。後にディスプレイ(出力)とキーボード(入力)が誕生し、「ディスプレイにメッセージを表示し、それを受けてユーザーがキーボードからデータを入力する」という形式が標準となりました。 それ以降、ユーザーが操作しやすい親切な画面設計が重要になっていきます ※2 。単純な処理なら、画面の左端から、それも黒地に白でメッセージを表示するだけで済む場合もあるでしょう。しかし、専門家でない普通の人々が間違えないように入力を誘導するためには、メッセージの出力位置を

    pn11
    pn11 2015/03/29
  • C言語講座:gets( )とscanf( )の問題点の解決

    [キーボードから1行入力]←このソース→[書式付き入力と書式指定子] /* 今日は、標準ライブラリ関数gets( )の問題点と、fgets( )による問題解決の話です。 #include <stdio.h> char *gets(char *s); 使用例:gets(s); 実行結 戻り値 成功 s 失敗 NULL gets( )は、標準入力(stdin:キーボード)から1行を読み込みsにしまいます。改行コード(\n)または EOF に出会うと、s に ヌル文字(\0)を追加して戻ります。次のプログラムを検討して見て下さい。重大な問題点があります。 #include <stdio.h> void main(void); void main(void) { char name[21]; printf("お名前を入力して下さい\t"); gets(name); printf("\nあなたのお名

    pn11
    pn11 2015/03/29
  • 絶対保存版! 長谷川裕行氏のロードワークコラム | Developer Solutions〈開発支援ツール〉 - メシウス株式会社

    長谷川 裕行 (はせがわ ひろゆき大阪芸術大学 写真学科で映像文化をテーマに研究、講師を務める一方でライター、テクニカルアドバイザーとしても第一線で活躍中。 サラリーマン時代にBASICと出会い、3か月で業務アプリケーションを開発。COBOLも覚えたが物足りず、汎用機、オフコン、UNIXへと興味の対象を広げ、1年後にはC言語とx86のアセンブリ言語を習得。雑誌に投稿したプログラムのReadme.txtが気に入られて執筆の世界に入る。 実践的な業務アプリケーションの知識を生かし、プログラミングの“キモ”を親しみやすい文章で執筆された記事は、時間が経過しても読まれているため、公開を継続している。

    pn11
    pn11 2015/03/29
  • RubyとC言語でもペントミノバズルを解いてみる - ザリガニが見ていた...。

    前回からの続き。 明治ミルクチョコーレートパズルの解をすべて探す - ザリガニが見ていた...。 ペントミノの解を求めるプログラム高速化 - ザリガニが見ていた...。 ペントミノパズルを解くPythonコードは、順調に高速化の道を歩んできた。 3時間以上 → 50分 → 20分 → 3分。 ところで、現在はnumpyにほとんど依存しないコードになっている。ならば、他のプログラミング言語でも同じアルゴリズムでペントミノパズルを解けるはず。ふと、使い慣れているRubyで書いてみたらどうなるのだろう?と思った。やってみた。 Rubyで解く 完全にPython脳になっていたので、endが必要な書き方に激しく無駄を感じてしまった。 いくつかのエラーに悩まされながら、どうにか以下のRubyコードを完成させた。 実行してみると... # coding: utf-8 BROW, BCOL = 10, 6

    RubyとC言語でもペントミノバズルを解いてみる - ザリガニが見ていた...。
  • GCCの最適化オプション

    郷に入っては郷に従えというが、GNU/Linuxのプログラミング環境にはまだまだ慣れない。とりあえず今のC++執筆作業には、最新のClangでコンパイルできればそれで用が足りるので、Clangのビルドが楽なGNU/Linux環境は悪くない。欲を言えばlibc++もまともに動くようになってほしい。Ubuntu 12.10でlibsupc++を使ってlibc++をビルドしてみたところ、RTTI周りのABIに問題があるらしく、virtual関数呼び出しすらできなかった。 しかし、GNU/Linuxにおけるプログラミングはどうにも学ぶことが多すぎる。GNUのgdbの使い方もそろそろ覚えたいし、Autotoolsの使い方も覚えたいものだ。幸い、GNU/Linuxで一般的なテキストエディターであるVimは、特に何も学ばなくても使えるので楽だ。たかがテキスト編集作業に、多数のキーボードショートカットを

    pn11
    pn11 2014/09/07
  • clmemo@aka: gcc の警告オプション -Wall と -W

    先日、友人と clmemo@aka: Binary Hacks がらみで、gcc の Warning flag をどうしてるか? という話になった。友人は、とりあえず -Wall オプションを付けているという。なるべく警告の出ないコードを書きたいものだよね、と応えた後、ぼくはかう続けた。「でも、-W オプションを付けると、-Wall よりも詳しい警告が出るよ」友人は驚いていた。 せっかくなので、ちょっとここでまとめておかう。 -Wall オプション gcc の info を読むと、-Wall オプションは、以下のオプションを全て指定したものに等しいとある (gcc 3.3.4 から引用)。 -Wno-import -Wchar-subscripts -Wcomment -Wformat -Wno-format-y2k -Wno-format-extra-args -Wno-format-z

    pn11
    pn11 2014/09/07
  • プログラミングのテクニック/入力の処理(C,C++) - 競技プログラミング Wiki*

    C由来の物 競技プログラミングでは、速度の関係上、C由来の入出力関数を使い、C++由来の入出力関数を避ける事が推奨されている場合が多いです。(例: JOI) scanf scanfはCではstdio.h、C++ではcstdioヘッダで定義されている関数で、様々な種類の入力をうけて、それに沿った型の変数に受ける事ができます。 第一引数で「フォーマット文字列」と呼ばれる形式に沿って、入力の形式を指定し、第二引数以降の任意個の引数で、入力を受ける先の変数のポインタを指定します。 フォーマット文字列等の詳しい説明はWikipediaで。 主に注意すべきは第二引数以降がポインタである事です。 また、競技とは関係ありませんが、実用プログラミングだと%sで文字列を入力として受ける場合に%10sのように長さを指定しないと、バッファオーバーランと呼ばれるセキュリティホールの元になったりするので注意が必要です

    プログラミングのテクニック/入力の処理(C,C++) - 競技プログラミング Wiki*
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    pn11
    pn11 2014/06/03
  • C言語の数学関数 - [物理のかぎしっぽ]

    著者:崎間 C,C++言語には以下の数学関数が用意されていますが,これらを使うには #include <math.h> として math.h というヘッダをインクルードする必要があります.コンパイル時には $ gcc foo.c -lm というふうに -lm オプションを付ける必要がある場合があります. 数学関数(要 math.h) † 一つまたは二つの引数を与え,それぞれの関数に対応した計算値を返すものです. ↑

    pn11
    pn11 2010/10/26
  • 標準入出力

    第5章 標準入出力関数(1) 標準入力(キーボードからの入力)、標準出力(画面への出力)を行う標準ライブラリ関数のうち、特に使用頻度の高い、printf() と scanf() について説明します。 尚、その他の標準入出力関数については 第8章 をご参照下さい。 標準入出力関数を使用するには、#include <stdio.h> が必要です。 「#include」については「18-2.#include」を参照してください。 5-1.printf() 画面に書式付きで出力します。 printf() の f は "format"(書式) の f です。printf()は書式指定を行うことにより、同じ「65」という数値でも、10進数で出力したり、文字で出力したりというように出力形式を変えることが出来ます。 (書き方)

    pn11
    pn11 2010/07/07
  • C言語入門

    pn11
    pn11 2010/07/07
  • 変数の基礎

    pn11
    pn11 2010/07/07
  • 11-C言語で文字列を扱う

    再確認、"ABC" さて、「"ABC"」というのが文中に出てくると、一体どういう意味をなすのか。これは重要です。前にも言いましたが、C言語には文字列という型はありません。それじゃぁ一体、文法上どういう意味になるのでしょうか。 じつはプログラム中に「"ABC"」が出てくると、これ全体がアドレスの値になります。何のアドレスの値かというと、'A', 'B', 'C', '\0' と連続してメモリ上に置かれた時の'A'へのポインタです。メモリ上のどこに置かれるかは分かりません、これはコンパイラやOSがうまく配置してくれます。 'A'はchar型、"ABC"は'A'のアドレス これを頭の中で何度も唱えてください。すると、こんなことができると分かるはずです。 char *s; s = "ABC"; この例は、char型へのポインタ変数sを作って、そいつにどこかに用意された"ABC"の先頭アドレスを代入

    pn11
    pn11 2010/07/07
  • undefined reference to `exp'

    pn11
    pn11 2010/03/19
    オプション-lmをつけろと。
  • PostEinstein.com > Contemplation > Miscellary > モンテカルロ法

  • 初心者のためのポイント学習C言語

    since:2002.06.02 更新に手が回らずすみません。 ANSI規格でもいいよという方は 御覧ください。m(_ _)m

  • 1