tomyamaのブログ

日記・雑記。

C言語 の検索結果:

C言語 rand()関数のサンプルコード

C言語の rand()関数のサンプルプログラムです。 rand()関数は、0 から RAND_MAX までの整数を返します。決まりきった事を実行する事が得意なコンピューターにとって、乱数を生成するのは難しい作業です。そのため実際には純粋にランダムな数字では無く、疑似乱数を返しています。つまり、あらかじめ決められた数値を順番に返しています。この事は『srand()関数のサンプルコード』の記事で確認しているのでそちらも読んでみて下さい。 今回のサンプルコードでは、rand()関数…

C言語 srand()関数のサンプルコード

C言語の srand() 関数のサンプルプログラムです。 srand()関数は、疑似乱数を返す rand()関数の開始点を設定します。 逆に言うと、srand()関数をコールしないと、rand()関数は毎回同じ所から開始する事になります。その事を確認するプログラムを書いてみます。 srand()関数: 疑似乱数整数系列の新しい種を指定する #include <stdlib.h> void srand( unsigned seed ); 目次 目次 サンプルコード [srand…

Intel CPUのアセンブラ

…した。 まずは簡単なC言語のコードを書いて、アセンブリコードを出力してみます。なるべく出力されるコードが少なくなるように、最低限のソースコードに留めています。 ソースコード [test.c] int main( void ){ return 0;} Windows 10, Visual Studio 2022, x86 Native Tools Command Prompt アセンブル出力 C言語からアセンブリコードに変換してみます。 /Fafile fileはアセンブリファ…

C言語 <assert.h> デバッグ用の診断機能

C言語の「assert.h」を使ったサンプルプログラムです。 たまに見かけるコードなのですが、自分では今までに使った事が無くて、今回初めて使ってみました。 assert() 条件の検証 準拠 POSIX.1-2001, POSIX.1-2008, C89, C99 #include <assert.h> void assert( int expression ); expressionが偽の場合、プログラムを中止する assert.hをインクルードする前にNDEBUGマクロを…

C言語 <stdarg.h> 可変引き数 サンプルソースコード

C言語の「stdarg.h」を使ったサンプルプログラムです。 va_start() 引数リストを初期化する C89 #include <stdarg.h> void va_start( va_list ap, last ); va_arg() 次の位置にある引数を取得する C89 #include <stdarg.h> type va_arg( va_list ap, type ); va_arg() を呼び出すごとに ap は変更されることに注意 va_end() va_l…

C言語 bsearch() ソートされた配列を二分木検索 (binary search) する

C言語の「bsearch()関数」のサンプルプログラムです。 bsearch() ソートされた配列を二分木検索 (binary search) する POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD #include <stdlib.h> void *bsearch( const void *key, const void *base, size_t nmemb, size_t size, int ( *compare )(…

C言語 POSIX 正規表現(regex)

C言語で使える正規表現ライブラリのサンプルプログラムです。 regex [POSIX.1-2001準拠] ヘッダーファイル #include <sys/types.h>#include <regex.h> 構造体 typedef struct{ regoff_t rm_so; /* 次の最大マッチング部分の開始オフセット位置 */ regoff_t rm_eo; /* 終了オフセット位置 */}regmatch_t; 関数プロトタイプ一覧 int regcomp( regex…

C言語 clock() プロセッサ時間の取得

C言語の「clock()関数」のサンプルプログラムです。 #include <time.h> clock_t clock(); clock()関数は、プログラムの実行開始から数えたシステム時計のサイクル数を返します。秒数を算出するには。この値をCLOCKS_PER_SECマクロで割ります。 目次 目次 ソースコード [clock.c] 実行例 Windows 10, Visual Studio 2022「x86 Native Tools Command Prompt for …

C言語 signal() ANSI C シグナル操作

C言語の「signal()関数」のサンプルプログラムです。 signal() シグナル操作 準拠 ANSI C, C89, C99, POSIX.1-2001. #include <signal.h> sighandler_t signal (int signum, sighandler_t sighandler) ; シグナル signum の処理方法を handler に設定する。handler には、SIG_IGN, SIG_DFL, プログラマが定義した関数「シグナル…

C言語 pause() シグナルを待つ

C言語の「pause()関数」のサンプルプログラムです。 pause() シグナルを待つ 準拠 SVr4, 4.3BSD, POSIX.1-2001. #include <unistd.h> int pause (void) ; 呼び出したプロセス(またはスレッド)を、シグナルを受け取り、終了させられるか、シグナル捕獲関数が呼び出されるまでスリープさせる。 [pause.c] #include <stdio.h>#include <unistd.h> /* pause() *…

シンプルなダイナミックリンクライブラリ(DLL)【3/3】

…g) 今回も、単一のC言語ソースで、複数アーキテクチャ向けのアプリケーションとしてビルドします。 DLLを利用する方法は、大きく分けて2種類あります。 リンカ実行時にDLLのシンボルを紐づけておく「動的リンク(ダイナミックリンク)」と、ビルド時にはシンボルは未解決のままにしておいて実行時にDLLを明示的にロードする「動的ロード(ダイナミックロード)」です。 前回は、「動的リンク」を使ったサンプルを作成しました。 『【2/3】DLLを使ってみる(動的リンク版)』 今回は「動的ロ…

シンプルなダイナミックリンクライブラリ(DLL)【2/3】

…g) 今回も、単一のC言語ソースで、複数アーキテクチャ向けのアプリケーションとしてビルドします。 DLLを利用する方法は、大きく分けて2種類あります。 リンカ実行時にDLLのシンボルを紐づけておく「動的リンク(ダイナミックリンク)」と、ビルド時にはシンボルは未解決のままにしておいて実行時にDLLを明示的にロードする「動的ロード(ダイナミックロード)」です。 今回は「動的リンク」を使ったアプリケーションを作成してみます。 なお、前回作成した、DLLのファイル,ソースコードは、『…

シンプルなダイナミックリンクライブラリ(DLL)【1/3】

C言語でシンプルなダイナミックリンクライブラリを書いてみる。 単一のC言語ソースで、複数アーキテクチャ向けの共有ライブラリとしてビルドすることを考える。 想定しているのは以下のプラットフォーム(開発環境)です。 WindowsのDLLファイル(Visual Studio) LinuxのSOファイル(gcc) CygwinのDLLファイル(gcc) Android(Termux)のSOファイル(clang) 【1/3】DLLを作成してみる 目次 【1/3】DLLを作成してみる …

ANSIエスケープシーケンスを使えない環境に対応する

… Appendix C言語以外の環境における対応 ANSIエスケープシーケンスとは コンソールや端末エミュレーターには、文字に色や太字などの修飾を施せる機能があります。 これはANSIエスケープシーケンスという制御コードを埋め込む事で実現できます。 使い方については、ググると判り易いページが沢山見つかると思います。⇒「ANSIエスケープシーケンスとは」 以下にANSIエスケープシーケンスの使用例を示します。 ANSIエスケープシーケンスの使用例 [bash] $ echo '…