本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
Windows,MacOS,Linux/UNIX,FreeBSD等のOS開発に利用されるプログラミング言語「C言語」に関する記事を紹介します.
C言語を習得してコンピュータの本質を理解できます!
C言語を学びたいあなたは,今すぐ本記事をブックマークしましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
事前に必要な基礎知識
本ブログの記事は主にC言語の中級者~上級者向けに書かれています.
具体的には,以下の方を対象としています.
- C言語を利用して研究開発している情報系の学部4年生~大学院生(修士・博士)
- ロボット,自動車,IoTを対象としたC言語エンジニア(組込み・IoTエンジニア)
- OSの中身を学びたい方
- コンピュータの本質を理解したい方
事前に必要な基礎知識として,以下のコンピュータの基本を習得しているとします.
これらのコンピュータの基本が身についていない場合は,まずは以下の本を理解した上で学ぶことをおすすめします.どれも名著です.
もちろん,これらの本を読みながらC言語を学んでもOKです.
ハードウェア
ハードウェアのおすすめの本は「コンピュータの構成と設計 MIPS Edition 第6版」です.
コンピュータの構成と設計 MIPS Edition 第6版は,コンピュータアーキテクチャ(ハードウェア)の基礎を学ぶための良書です.
本の著者はデイビッド・パターソンとジョン・ヘネシーで,苗字の最初の2文字をそれぞれ取って「パタヘネ」と呼ばれています.
パタヘネはコンピュータアーキテクチャを学ぶための必読書です.
リンク
リンク
コンピュータの構成と設計 MIPS Edition 第6版を理解して余裕があるあなたは,「コンピュータアーキテクチャ[第6版]定量的アプローチ」をおすすめします.
コンピュータアーキテクチャ[第6版]定量的アプローチの著者は,順番は違いますが,同じくジョン・ヘネシーとデイビッド・パターソンで,苗字の最初の2文字をそれぞれ取って「ヘネパタ」と呼ばれています.
ヘネパタはパタヘネよりは高度な内容ですが,挑戦したいあなたにおすすめです.
リンク
OS
「オペレーティングシステム 第3版」は,OSの本質が学べる本です.
オペレーティングシステム 第3版の著者は,アンドリュー・タネンバウムです.
アンドリュー・タネンバウムは,Minixという教育用のUnix系OSを開発したことで有名です.
オペレーティングシステム 第3版で,OSの本質を学べます.
リンク
「30日でできる! OS自作入門」は,C言語を学んでOSを自作する楽しさを知りたいあなたにおすすめです.
リンク
C言語(初心者)
C言語の初心者向けの内容を独学したいあなたに,以下のブログをおすすめします.
どちらも人気ブログなので,書籍化されています.
リンク
リンク
以下の本は,C言語を開発したブライアン・カーニハンとデニス・リッチー(K&R)が書いた「プログラミング言語C 第2版」です.
プログラミング言語C 第2版は1988年発売と結構古いですが,一度読んでおくことをおすすめします.
上記で紹介したブログや参考書と比較すると,少し難しめです.
リンク
「ちょっとC言語の独学は難しいな...」と思うあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社を読みましょう.
-
-
元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社
こういった悩みにお答えします. こういった私が解説していきます. 私が大学の授業で初めてC言語を勉強した時は全然できませんでしたが,先生やTA,友人に相談しながら一生懸命C言語を勉強してできるようにな ...
続きを見る
C言語の開発環境
本ブログにおけるC言語の開発環境は,特に断りがない限り以下になります.
- Intel 64ビットCPU(マルチコア)
- Linux 5.15.0(Ubuntu 22.04 LTS)
- GCC 11.2.0
また,GCC 11.2.0の比較用のコンパイラとしてClang 14.0.0,他の開発環境としてWindows 11上でVisual Studio 2022を利用することがあります.
Ubuntuを使っているあなたは,apt-getコマンドで以下のソフトウェアをインストールしましょう.
基本的にはC言語で開発できれば良いですが,コードの比較用に一部C++/Python言語で開発する場合があります.
|
# C Compilers $ sudo apt-get install ccache gcc clang clang-tools llvm gcc-aarch64-linux-gnu # C Libraries $ sudo apt-get install libgmp-dev libreadline-dev # C Analysis Tools $ sudo apt-get install astyle cppcheck flawfinder clang-format # C++ Compilers $ sudo apt-get install g++ g++-aarch64-linux-gnu # Python $ sudo apt-get install python3 python3-pip # Tools $ sudo apt-get install git make gdb gnuplot rr scons # QEMU $ sudo apt-get install qemu qemu-user qemu-user-static qemu-system libncurses5-dev libncursesw5-dev ncurses-doc |
C言語のコードのライセンス
本ブログでオープンソースとして公開する私が作成したC言語のコードのライセンスは,2条項 BSDライセンスになります.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Copyright (c) 2020-2022, Hiroyuki Chishiro All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
また,引用するコードは,そのライセンスに従います.
例えば,Linuxカーネルのコードのライセンスは,GPL Version 2になります.
私が書いたLinuxカーネルのカーネルモジュールのコードも同様にGPL Version 2です.
私が書いたコードで,あなたのコーディング時間を減らし,タイム・パフォーマンス(タイパ)を向上することができます.
つまり,あなたの研究開発や仕事の効率を上げることができますので,是非利用して下さい!
C言語の概要
-
-
C言語とは【元東大教員から学べます】
こういった悩みにお答えします. こういった私から学べます. C言語とは C言語とは,1972年にアメリカのAT&Tのベル研究所でデニス・リッチーにより開発されたプログラミング言語です. もとも ...
続きを見る
-
-
元東大教員が語るC言語,C++言語とC#言語の違い
こういった悩みにお答えします. こういった私から学べます. C言語,C++言語とC#言語の違い C言語,C++言語とC#言語の違いを以下の点で説明します.似たような名前で違いがよくわからないあなたにお ...
続きを見る
-
-
元東大教員が語るC言語を学ぶ3つのメリット
こういった悩みにお答えします. こういった私が解説していきます. マナブさんの動画「【実体験】C言語はつまらないので,挫折します【本音を話します】」を観て,C言語がつまらないと思うこともあるかもしれま ...
続きを見る
-
-
元東大教員が語るC言語の初心者と中級者~上級者のおすすめの勉強法
こういった悩みにお答えします. こういった私から学べます. 元東大教員が語るC言語の初心者と中級者~上級者のおすすめの勉強法 元東大教員が語るC言語の初心者と中級者~上級者のおすすめの勉強法を紹介しま ...
続きを見る
-
-
元東大教員が語るC言語が挫折するほど難しい5つの理由とできるようになる3つの方法
こういった悩みにお答えします. こういった私から学べます. 元東大教員が語るC言語が挫折するほど難しい5つの理由 元東大教員が語るC言語が挫折するほど難しい5つの理由を紹介します. 私の以下の経験から ...
続きを見る
C言語のWebサイト
-
-
【無料】C言語のプログラムを実行できるおすすめWebサイト3選
こういった悩みにお答えします. こういった私が解説していきます. C言語を学ぶために開発環境を構築するのは面倒ですよね. そんなあなたにC言語のプログラムを実行できるおすすめWebサイト3選を紹介しま ...
続きを見る
-
-
【無料】C言語の演習問題を解けるおすすめWebサイト3選
こういった悩みにお答えします. こういった私が解説していきます. 本記事の対象読者 本記事の対象読者は以下になります. コンピュータの初級レベルを習得していること 英語で学べること プログラミング言語 ...
続きを見る
C言語の基礎(深掘り)
データ型,複素数型,typedef,オーバーフロー,非数と無限大,_Atomic
-
-
【C言語】データ型とは【変数定義,変数名のルールと命名規則,定数,配列,文字配列,型修飾子】
こういった悩みにお答えします. こういった私から学べます. データ型とは データ型とは,データを表現する方法のことを言います. あなたがこれまでにC言語で変数を定義した時,intという予約語を利用しま ...
続きを見る
-
-
【C言語】複素数型の四則計算(足し算,引き算,掛け算,割り算)と標準ライブラリ関数の使い方
こういった悩みにお答えします. こういった私から学べます. C言語のC99規格で複素数型が採用されたことはご存知ですか? しかし,あまり広く使われていないので,使い方がわからないですよね. そんなあな ...
続きを見る
-
-
【C言語】typedefとは
こういった悩みにお答えします. こういった私から学べます. typedefとは typedefとは,データ型の別名を定義する記憶クラス指定子です. typedefを利用するメリットは以下になります. ...
続きを見る
-
-
【C言語】算術オーバーフローと回避方法
こういった悩みにお答えします. こういった私から学べます. 算術オーバーフロー 算術オーバーフロー(オーバーフロー)とは,算術演算の結果がデータ型の範囲を超える(最大値より大きい,もしくは最小値より小 ...
続きを見る
-
-
【C言語】非数(nan:Not a Number)と無限大(inf:∞)とは【isnan/isinf関数】
こういった悩みにお答えします. こういった私から学べます. 非数(nan:Not a Number)と無限大(inf:∞) 非数(nan:Not a Number)とは,に浮動小数点数の演算結果で不正 ...
続きを見る
-
-
【C言語】アトミック型修飾子「_Atomic」の使い方
こういった悩みにお答えします. こういった私から学べます. 本記事はC11規格のスレッドを理解していることを前提とします. アトミック型修飾子「_Atomic」 _Atomicは,C言語のC11規格か ...
続きを見る
演算子
-
-
【C言語】演算子とは
こういった悩みにお答えします. こういった私から学べます. 演算子とは 演算子とは,データとデータを結びつけて何らかの演算をするための記号です. 演算子の存在はC言語に限ったことではなく,プログラミン ...
続きを見る
-
-
【C言語】剰余演算子(%)の符号の注意点
こういった悩みにお答えします. こういった私から学べます. 剰余演算子(%) C言語の剰余演算子(%)は,aをbで除算した時の余りrを取得します. また,a,b,rは以下の条件を満たします.(\(q ...
続きを見る
-
-
【C言語】ビット演算子とシフト演算子の使い方
こういった悩みにお答えします. こういった私から学べます. ビット演算子 ビット演算子とは,各々のビットに対する論理演算を一度に行う演算子のことです. C言語は本来はOSのようなシステム記述用の言語と ...
続きを見る
-
-
【C言語】ビット演算とシフト演算の応用:回転,セット/クリア,スキャン,カウント【x86-64/ARM64命令のコード】
こういった悩みにお答えします. こういった私から学べます. C言語でビット演算とシフト演算の応用 C言語でビット演算とシフト演算の応用を紹介します. ビット演算とシフト演算の応用は,OSの実装でよく利 ...
続きを見る
-
-
【C言語】キャスト演算子による明示的な型変換【暗黙的な型変換も紹介】
こういった悩みにお答えします. こういった私から学べます. キャスト演算子【明示的な型変換】 キャスト演算子とは,データ型を別のデータ型に明示的に変換する演算子のことです. キャスト演算子の書式は,以 ...
続きを見る
-
-
【C言語】sizeof演算子の使い方
こういった悩みにお答えします. こういった私から学べます. sizeof演算子とは sizeof演算子とは,データ型,変数,ポインタ,構造体,配列等のサイズ(大きさ)をバイト単位で計算する演算子です. ...
続きを見る
-
-
【C言語】アラインメントの_Alignas指定子と_Alignof演算子の使い方
こういった悩みにお答えします. こういった私から学べます. 【C言語】アラインメントの_Alignas指定子と_Alignof演算子 C言語のアラインメントの_Alignas指定子と_Alignof演 ...
続きを見る
-
-
【C言語】&を利用する3つの演算子【アドレス,論理積,ビット毎の論理積】
こういった悩みにお答えします. こういった私から学べます. &a,*b:アドレス演算子(&)と間接演算子(*) あなたがscanf関数を利用する時,変数の前に&をつけましたよね ...
続きを見る
-
-
【C言語】演算子の優先順位と結合規則
こういった悩みにお答えします. こういった私から学べます. 演算子の優先順位と結合規則 数学の式に優先順位があるのと同様に,C言語の演算子にも優先順位があります. また,同じ順位なら右から左(←)か, ...
続きを見る
制御文
-
-
【C言語】制御文とは【if/else/while/do-while/for/switch/break/continue】
こういった悩みにお答えします. こういった私から学べます. 制御文とは 制御文とは,プログラムを開発するためには,適切に実行を制御する文のことです. プログラムを制御するとは,ある条件を元に文を実行す ...
続きを見る
-
-
【C言語】for文で6種類の数字のピラミッドの表示
こういった悩みにお答えします. こういった私から学べます. C言語を学んでいると,よくfor文でピラミッドを表示する問題が出ますよね. うまくコードが書けなくて悩んでいるあなたに数字のピラミッドを表示 ...
続きを見る
-
-
【C言語】for文でうるう年を考慮したカレンダーの表示
こういった悩みにお答えします. こういった私から学べます. うるう年 うるう年とは,2月が28日ではなく29日と1日増える年のことです. 西暦年が「4の倍数である」かつ「100の倍数でない」,または「 ...
続きを見る
-
-
【C言語】goto文が有用な3つの例外
こういった悩みにお答えします. こういった私から学べます. goto文 goto文は,コード中の指定された場所(ラベル)に無条件にジャンプ(移動)する制御構造を持つ文です. goto文のメリットは,自 ...
続きを見る
関数,ポインタ
-
-
【C言語】関数とは【プロトタイプ宣言,引数,記憶クラス指定子とスコープ,関数内外の変数の初期化】
こういった悩みにお答えします. こういった私から学べます. 関数とは 関数とは,一般的には,ある値(引数)を入れるとその値を利用して演算し,その結果(返り値)を返すものです. C言語のコードは,多くの ...
続きを見る
-
-
【C言語】関数の再帰呼び出し【階乗,順列,組み合わせ,フィボナッチ数列,アッカーマン関数】
こういった悩みにお答えします. こういった私から学べます. 関数の再帰呼び出し C言語では,関数の再帰呼び出しが可能です. 関数の再帰呼び出しとは,関数の中で自分自身を呼び出すことです. 再帰呼び出し ...
続きを見る
-
-
【C言語】ポインタとは【変数,関数,引数,メリット,配列,文字列,構造体】
こういった悩みにお答えします. こういった私から学べます. ポインタとは ポインタとは,変数や関数等が置かれたメモリ上のアドレスにアクセスするための機能です. C言語は,OSを開発するためのプログラミ ...
続きを見る
-
-
【C言語】_Noreturn関数指示子の使い方と実例
こういった悩みにお答えします. こういった私から学べます. _Noreturn _Noreturnは,C言語で関数が戻らないことを意味することをコンパイラに伝える関数指示子です. _Noreturn関 ...
続きを見る
-
-
【C言語】inline関数指示子の使い方と実例
こういった悩みにお答えします. こういった私から学べます. inline関数指示子 inline関数指示子は,C言語のC99規格から採用されたコンパイラに対して特定の関数をインライン展開するよう指示す ...
続きを見る
構造体,共用体,列挙型
-
-
【C言語】構造体とは【定義,変数,アクセス,引数,返り値,ポインタ,ビットフィールド】
こういった悩みにお答えします. こういった私から学べます. 構造体とは 構造体とは,データをグループ化して取り扱うための機能です. 例えば,ディスプレイ上の点はx座標とy座標の2次元座標からなります. ...
続きを見る
-
-
【C言語】共用体unionの使い方と実例
こういった悩みにお答えします. こういった私から学べます. 共用体union 共用体unionは,複数の異なる型とサイズの変数を同じアドレスを共有するように保持します. つまり,union型は異なる型 ...
続きを見る
-
-
【C言語】列挙型enumの使い方と実例
こういった悩みにお答えします. こういった私から学べます. 列挙型enumとは 列挙型enumとは,ある定数のまとまりを新しい型として取り扱うことができる型のことです. 列挙型は「整数定数」のリストと ...
続きを見る
プリプロセッサ(マクロ),総称選択_Generic
-
-
【C言語】プリプロセッサ(マクロ)とは
こういった悩みにお答えします. こういった私から学べます. C言語のプリプロセッサ(マクロ)とは プリプロセッサ(マクロ)とは,C言語でコンパイルする前の処理(プリプロセス)を行うプログラムのことです ...
続きを見る
-
-
【C言語】総称選択_Genericの使い方
こういった悩みにお答えします. こういった私から学べます. 総称選択_Generic _Genericは,C言語のC11規格から採用された総称選択(Generic Selection)のキーワードです ...
続きを見る
可変長引数
-
-
【C言語】可変長引数"..."とは
こういった悩みにお答えします. こういった私から学べます. 可変長引数とは 可変長引数とは,関数やマクロの引数の個数が固定ではなく任意の個数となっている引数のことです. これまでに何気なくprintf ...
続きを見る
-
-
【C言語】scanf関数の改行文字('\n')が残る問題の回避方法
こういった悩みにお答えします. こういった私から学べます. 【C言語】scanf関数の改行文字('\n')が残る問題の回避方法 C言語のscanf関数は,標準入力を標準入力から読み込むライブラリ関数で ...
続きを見る
-
-
【C言語】printfファミリー関数の使い方【printf/fprintf/dprintf/sprintf/snprintf/vprintf/vfprintf/vdprintf/vsprintf/vsnprintf関数】
こういった悩みにお答えします. こういった私から学べます. 【C言語】printfファミリー関数
|
int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int dprintf(int fd, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); int vprintf(const char *format, va_list ap); int vfprintf(FILE *stream, const char *format, va_list ap); int vdprintf(int fd, const char *format, va_list ap); int vsprintf(char *str, const char *format, va_list ap); int vsnprintf(char *str, size_t size, const char *format, va_list ap); |
printfファミリー関数(prin ...
続きを見る
-
-
【C言語】scanfファミリー関数の使い方【scanf/fscanf/sscanf/vscanf/vsscanf/vfscanf関数】
こういった悩みにお答えします. こういった私から学べます. 【C言語】scanfファミリー関数
|
int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(const char *str, const char *format, ...); int vscanf(const char *format, va_list ap); int vfscanf(FILE *stream, const char *format, va_list ap); int vsscanf(const char *str, const char *format, va_list ap); |
scanfファミリー関数(scanf/ ...
続きを見る
-
-
【C言語】printf関数の自作「myprintf関数」
こういった悩みにお答えします. こういった私から学べます. C言語でprintf関数の自作「myprintf関数」 C言語でprintf関数の自作「myprintf関数」を紹介します. printf関 ...
続きを見る
-
-
【C言語】scanf関数の自作「myscanf関数」
こういった悩みにお答えします. こういった私から学べます. C言語でscanf関数の自作「myscanf関数」 C言語でscanf関数の自作「myscanf関数」を紹介します. scanf関数の内部構 ...
続きを見る
予約語(キーワード),C23規格
-
-
【C言語】予約語(キーワード)【C99/C11/C23の追加分もあります】
こういった悩みにお答えします. こういった私から学べます. C言語の予約語(キーワード) C言語の予約語(キーワード)は,C89では32個,C99では37個,C11では44個ありますので,それぞれ紹介 ...
続きを見る
-
-
【C言語】C23規格のプログラミング【GCC 13.1/Clang 16.0を利用】【使い方】
こういった悩みにお答えします. こういった私から学べます. 【C言語】C23規格 C23規格は2024年に予定されているC言語の規格です. C23規格を含むC言語の規格策定のプロジェクトは,「C - ...
続きを見る
ビルド,デバッグツール,アサーション
-
-
【C言語】Makeの使い方
こういった悩みにお答えします. こういった私が解説していきます. C言語はPython,Ruby,HTML/CSS/JS/PHPのようなアプリケーション系の言語と比較して難易度が高いですよね. 私がC ...
続きを見る
-
-
【C言語】SCons:All-in-Oneのビルドツール
こういった悩みにお答えします. こういった私から学べます. SCons SConsは,ソフトウェアプロジェクトの記述からソースコードファイルの依存性とOSの適応要件を自動的に分析し,ターゲットとなるO ...
続きを見る
-
-
【C言語】GDBでプログラムを効率的にデバッグ
こういった悩みにお答えします. こういった私が解説していきます. GNU Debugger(GDB) GNU Debugger(GDB)は,GNUプログラムの実行の変更や追跡する機能を提供するデバッガ ...
続きを見る
-
-
【C言語】rr:プログラムの実行を記録,再生できるLinux用デバッグツール
こういった悩みにお答えします. こういった私から学べます. rr:プログラムの実行を記録,再生できるLinux用デバッグツール rr(record and replay)は,Mozillaが開発したプ ...
続きを見る
-
-
【C/C++言語】静的コード解析ツールと動的プログラム解析ツール
こういった悩みにお答えします. こういった私から学べます. C/C++言語の静的コード解析ツール C言語の静的コード解析ツールを紹介します. Clang Static Analyzer Clang S ...
続きを見る
-
-
【C言語】コンパイラの最適化と戦うあなたへ
こういった悩みにお答えします. こういった私から学べます. C言語のコンパイラの最適化による不具合 C言語のコンパイラ(主にGCC)の最適化でプログラムが正常に動作しなかった経験がありませんか? コン ...
続きを見る
-
-
【C言語】静的アサーション_Static_assertと動的アサーションassertマクロの使い方
こういった悩みにお答えします. こういった私から学べます. 静的アサーション_Static_assertと動的アサーションassertマクロ C言語の静的アサーション_Static_assertと動的 ...
続きを見る
-
-
【C言語】Linuxカーネルの関数呼び出しをトレースするKernelSharkの使い方
こういった悩みにお答えします. こういった私から学べます. KernelShark KernelSharkとは,カーネルの関数呼び出しのグラフを追跡し,呼び出された関数とタイムスタンプを表示するツール ...
続きを見る
-
-
【C言語】ネットワークアナライザ「Wireshark」とは
こういった悩みにお答えします. こういった私から学べます. Wireshark Wiresharkは,C言語で開発されたネットワークアナライザです. Wiresharkは,IP,DHCPなど800以上 ...
続きを見る
開発ツール
-
-
【C/C++言語】Visual StudioでC4996エラーを回避する4つの方法
こういった悩みにお答えします. こういった私から学べます. C言語のC4996エラー C言語のC4996エラーとは,Visual Studioで安全ではない標準ライブラリ関数を利用する際,ビルド時に発 ...
続きを見る
-
-
【C言語】Artistic Style(AStyle)でコードの整形を
こういった悩みにお答えします. こういった私が解説していきます. Artistic Style(AStyle) Artistic Style(AStyle)はC言語で利用可能なコード整形ツールです. ...
続きを見る
-
-
C言語からC++/Rust/Python/Go/Java言語の関数呼び出し
こういった悩みにお答えします. こういった私から学べます. C言語だと実装するのに面倒なことがありますよね. そんなあなたにC言語からC++/Rust/Python/Go/Java言語の関数呼び出しを ...
続きを見る
-
-
C言語でC++言語の機能を模倣する方法
こういった私から学べます. C言語でC++言語みたいにコードを書けたら便利だと思ったことはありませんか? そんなあなたにC言語でC++言語の機能を模倣する方法を紹介します. 基本的にはGCC/Clan ...
続きを見る
-
-
【C/C++言語】おすすめのインタプリタ2選
こういった悩みにお答えします. こういった私から学べます. C/C++言語は基本的にはGCC/Clang/Visual Studio等のコンパイラでコンパイルして実行しますが,インタプリタがあることを ...
続きを見る
-
-
【C/C++/Java言語】OS研究の性能評価でよく利用されるベンチマーク
こういった悩みにお答えします. こういった私から学べます. 本記事は以下の記事を理解していることを前提とします. 【C/C++/Java言語】OS研究の性能評価でよく利用されるベンチマーク C/C++ ...
続きを見る
C言語の標準ライブラリ
stdio.h
-
-
【C言語】標準入力stdinから値を読み込む方法
こういった悩みにお答えします. こういった私から学べます. 標準入力stdin C言語の標準入力stdinから読み込む値は以下になります. 文字 文字列 数値(整数や浮動小数点数) それぞれの方法を解 ...
続きを見る
-
-
【C言語】ungetc関数の使い方
こういった悩みにお答えします. こういった私から学べます. 本記事では,標準入力stdinから値を読み込む方法を習得しているとします. ungetc関数 [crayon-66ea3493a3b2728 ...
続きを見る
-
-
【C言語】標準出力と標準エラー出力の違い
こういった悩みにお答えします. こういった私から学べます. C言語の標準出力と標準エラー出力の違い C言語の標準出力と標準エラー出力の違いを説明します. 3つの標準ファイルストリーム プログラムには下 ...
続きを見る
-
-
【C言語】sprintf/snprintf/sprintf_s関数の使い方
こういった悩みにお答えします. こういった私から学べます. sprintf関数
|
int sprintf(char *str, const char *format, ...); |
sprintf関数は,formatに従って出力を文字列 ...
続きを見る
-
-
【C言語】fopen/open/fopen_s関数の使い方【fclose/close関数】
こういった悩みにお答えします. こういった私から学べます. fopen関数
|
FILE *fopen(const char *pathname, const char *mode); |
fopen関数は,ファイルを操作するANSI規格の関数です ...
続きを見る
-
-
【C言語】printfファミリー関数の使い方【printf/fprintf/dprintf/sprintf/snprintf/vprintf/vfprintf/vdprintf/vsprintf/vsnprintf関数】
こういった悩みにお答えします. こういった私から学べます. 【C言語】printfファミリー関数
|
int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int dprintf(int fd, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); int vprintf(const char *format, va_list ap); int vfprintf(FILE *stream, const char *format, va_list ap); int vdprintf(int fd, const char *format, va_list ap); int vsprintf(char *str, const char *format, va_list ap); int vsnprintf(char *str, size_t size, const char *format, va_list ap); |
printfファミリー関数(prin ...
続きを見る
-
-
【C言語】scanfファミリー関数の使い方【scanf/fscanf/sscanf/vscanf/vsscanf/vfscanf関数】
こういった悩みにお答えします. こういった私から学べます. 【C言語】scanfファミリー関数
|
int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(const char *str, const char *format, ...); int vscanf(const char *format, va_list ap); int vfscanf(FILE *stream, const char *format, va_list ap); int vsscanf(const char *str, const char *format, va_list ap); |
scanfファミリー関数(scanf/ ...
続きを見る
-
-
【C言語】scanf関数の改行文字('\n')が残る問題の回避方法
こういった悩みにお答えします. こういった私から学べます. 【C言語】scanf関数の改行文字('\n')が残る問題の回避方法 C言語のscanf関数は,標準入力を標準入力から読み込むライブラリ関数で ...
続きを見る
-
-
【C言語】一時ファイルを作成するtmpfile関数とmkstemp関数,一時ディレクトリを作成するmkdtemp関数の使い方
こういった悩みにお答えします. こういった私から学べます. 一時ファイルを作成するtmpfile関数とmkstemp関数 一時ファイルを作成するtmpfile関数とmkstemp関数を紹介します. t ...
続きを見る
-
-
【C言語】gets関数が廃止された理由と代替関数
こういった悩みにお答えします. こういった私から学べます. gets関数が廃止された理由
C言語でgets関数が廃止された理由は,バッ ...
続きを見る
stdlib.h
-
-
【C言語】絶対値を標準ライブラリ関数と自作関数・マクロで計算
こういった悩みにお答えします. こういった私から学べます. 絶対値 絶対値とは,0からの距離を表す値です. 例えば,3の絶対値は3ですが,-3の絶対値も3になります. C言語で絶対値を計算する方法は大 ...
続きを見る
-
-
【C言語】atoi/atof/strtol/strtod関数と自作関数で文字列を数値に変換【数値を文字列に変換する自作関数も紹介】
こういった悩みにお答えします. こういった私から学べます. C言語で文字列を数値に変換する方法と数値を文字列に変換する方法を紹介します. 本記事を読むと文字列と数値の相互変換をきちんと理解できます. ...
続きを見る
-
-
【C言語】rand関数と自作関数で乱数の生成【モンテカルロ法で円周率の計算】
こういった悩みにお答えします. こういった私から学べます. 乱数 乱数はランダムな数を意味します. 乱数の特徴として,偏りがないことや再現性がないことが要求されますが,コンピュータの計算による乱数生成 ...
続きを見る
-
-
【C言語】malloc/calloc/realloc/alloca関数と可変長配列で動的にメモリ確保
こういった悩みにお答えします. こういった私から学べます. C言語のmalloc/calloc/realloc/alloca関数と可変長配列で動的にメモリ確保する方法を紹介します. malloc関数で ...
続きを見る
-
-
【C言語】線形探索と二分探索で数値と文字列の検索【lfind/lsearch/bsearch関数と自作関数】
こういった悩みにお答えします. こういった私から学べます. 線形探索と二分探索 線形探索とは,n個の配列のデータを前から(または後ろから)順番に検索する探索アルゴリズムです. 線形探索の最悪計算量は\ ...
続きを見る
-
-
【C言語】qsort/qsort_r関数の使い方
こういった悩みにお答えします. こういった私から学べます. qsort関数
|
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); |
qsort関数は,nmemb個の大きさsizeの要素をもつ ...
続きを見る
-
-
【C言語】一時ファイルを作成するtmpfile関数とmkstemp関数,一時ディレクトリを作成するmkdtemp関数の使い方
こういった悩みにお答えします. こういった私から学べます. 一時ファイルを作成するtmpfile関数とmkstemp関数 一時ファイルを作成するtmpfile関数とmkstemp関数を紹介します. t ...
続きを見る
-
-
【C言語】整数の除算と剰余演算をするdiv関数の存在意義と使い方
こういった悩みにお答えします. こういった私から学べます. C言語で整数で除算と剰余演算をするdiv関数があることはご存知ですか? C言語では,除算演算子(/)と剰余演算子(%)を利用すれば整数で除算 ...
続きを見る
-
-
【C言語】Base64のエンコードとデコード【イーサリアムで利用】【a64l/l64a関数】
こういった悩みにお答えします. こういった私から学べます. Base64 Base64とは,バイナリデータをテキストデータに変換するエンコード方式です. テキストデータには,以下の65文字を利用します ...
続きを見る
string.h
-
-
【C言語】strcmp/strncmp関数と自作関数で文字列の比較
こういった悩みにお答えします. こういった私から学べます. C言語で文字列の比較 C言語で文字列を比較する時は,Java言語やPython言語のように==演算子を使えません. どうすればよいのかという ...
続きを見る
-
-
【C言語】strlen関数と自作関数で文字列の長さの計算
こういった悩みにお答えします. こういった私から学べます. C言語で文字列の長さの計算 C言語のstrlen関数で文字列の長さを計算する方法を紹介します. また,strlen関数を拡張したstrnle ...
続きを見る
-
-
【C言語】strcpy/strncpy/strcpy_s関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. strcpy関数
|
char *strcpy(char *dest, const char *src); |
strcpy関数は,srcが指す文字列を末尾のヌルバイト ...
続きを見る
-
-
【C言語】strcat/strncat/strcat_s関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. strcat関数
|
char *strcat(char *dest, const char *src); |
strcat関数は,dest文字列の後にsrc文字列を追 ...
続きを見る
-
-
【C言語】strdup/strndup関数で文字列の複製と自作関数
こういった悩みにお答えします. こういった私から学べます. strdup/strndup関数で文字列の複製
|
char *strdup(const char *s); char *strndup(const char *s, size_t n); |
strdup/strndu ...
続きを見る
-
-
【C言語】strtok/strtok_r/strsep関数の注意点と使い方【自作関数も紹介】
こういった悩みにお答えします. こういった私から学べます. strtok/strtok_r/strsep関数
|
char *strtok(char *str, const char *delim); char *strtok_r(char *str, const char *delim, char **saveptr); char *strsep(char **stringp, const char *delim); |
strtok/strto ...
続きを見る
-
-
【C言語】strchr/strrchr関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 【C言語】strchr/strrchr関数
|
char *strchr(const char *s, int c); char *strrchr(const char *s, int c); |
strchr/strrchr関 ...
続きを見る
-
-
【C言語】文字列の検索方法【ナイーブ法,KMP法,BM法】【strstr/strcasestr関数】
こういった悩みにお答えします. こういった私から学べます. C言語で文字列の検索 C言語で文字列の検索方法を紹介していきます. 文字列の検索とは,ある文字列の中に特定の部分文字列があるかどうか判定する ...
続きを見る
-
-
【C言語】memcpy関数とmemmove関数の違いと自作関数
こういった悩みにお答えします. こういった私から学べます. memcpy関数とmemmove関数の違い
|
void *memcpy(void *dest, const void *src, size_t n); |
memcpy関数は,メモリ領域 ...
続きを見る
-
-
【C言語】メモリ領域をコピーするmemccpy関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 本記事は,memcpy関数とmemmove関数の違いと自作関数を理解していることを前提とします. ※本記事で紹介するmemccpy関数は,m ...
続きを見る
-
-
【C言語】strspn/strcspn関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. strspn/strcspn関数
|
size_t strspn(const char *s, const char *accept); size_t strcspn(const char *s, const char *reject); |
strspn/strcspn関数は,プレ ...
続きを見る
-
-
【C言語】strpbrk関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. strpbrk関数
|
char *strpbrk(const char *s, const char *accept); |
strpbrk関数は,文字列acceptに含まれるバイ ...
続きを見る
-
-
【C言語】文字列中の文字をランダムに並び替えるstrfry関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. strfry関数
|
char *strfry(char *string); |
strfry関数は,文字列string中の文字をランダム ...
続きを見る
-
-
【C言語】strerror関数の使い方
こういった悩みにお答えします. こういった私から学べます. 【C言語】strerror関数
|
char *strerror(int errnum); |
strerror関数は,string.hで ...
続きを見る
-
-
【C言語】 メモリエリアを暗号化(操作)するmemfrob関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. memfrob関数
|
void *memfrob(void *s, size_t n); |
memfrob関数は,メモリエリアsの最初のnバイトの ...
続きを見る
-
-
【C言語】memchr/memrchr関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 【C言語】memchr/memrchr関数
|
void *memchr(const void *s, int c, size_t n); void *memrchr(const void *s, int c, size_t n); |
memchr/memrchr関 ...
続きを見る
stdalign.h
-
-
【C言語】アラインメントの_Alignas指定子と_Alignof演算子の使い方
こういった悩みにお答えします. こういった私から学べます. 【C言語】アラインメントの_Alignas指定子と_Alignof演算子 C言語のアラインメントの_Alignas指定子と_Alignof演 ...
続きを見る
stdnoreturn.h
-
-
【C言語】_Noreturn関数指示子の使い方と実例
こういった悩みにお答えします. こういった私から学べます. _Noreturn _Noreturnは,C言語で関数が戻らないことを意味することをコンパイラに伝える関数指示子です. _Noreturn関 ...
続きを見る
ctype.h
-
-
【C言語】ctype.hの関数で文字を分類
こういった悩みにお答えします. こういった私から学べます. ctype.hの関数 標準ライブラリのヘッダファイルctype.hには,C言語で文字を分類する関数のプロトタイプ宣言があります. ctype ...
続きを見る
limits.h,float.h
-
-
【C言語】処理系依存の整数と浮動小数点数の最小値と最大値の取得
こういった悩みにお答えします. こういった私から学べます. 処理系依存の整数と浮動小数点数の最小値と最大値の取得 処理系依存の整数と浮動小数点数の最小値と最大値は,それぞれ以下のヘッダで定義されていま ...
続きを見る
math.h
-
-
【C言語】三角関数のsin/cos/tan関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 三角関数のsin/cos/tan関数 三角関数の正弦/余弦/正接を計算するsin/cos/tan関数を紹介します. sin/sinf/sin ...
続きを見る
-
-
【C言語】逆三角関数のasin/acos/atan/atan2関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 逆三角関数のasin/acos/atan/atan2関数 逆三角関数のasin/acos/atan/atan2関数を紹介します. asin関 ...
続きを見る
-
-
【C言語】双曲線関数のsinh/cosh/tanh関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 双曲線関数のsinh/cosh/tanh関数 双曲線関数のsinh/cosh/tanh関数を紹介します. sinh/sinhf/sinhl関 ...
続きを見る
-
-
【C言語】逆双曲線関数のasinh/acosh/atanh関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 逆双曲線関数のasinh/acosh/atanh関数 逆双曲線関数のasinh/acosh/atanh関数を紹介します. asinh/asi ...
続きを見る
-
-
【C言語】exp/exp2/exp10/expm1関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. exp/exp2/exp10/expm1関数
|
double exp(double x); double exp2(double x); double exp10(double x); double expm1(double x); |
exp関数は,double型 ...
続きを見る
-
-
【C言語】log/log2/log10/log1p関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. log/log2/log10/log1p関数
|
double log(double x); double log2(double x); double log10(double x); double log1p(double x); |
log関数は,double型 ...
続きを見る
-
-
【C言語】pow関数と自作関数でべき乗,累乗,2乗の計算
こういった悩みにお答えします. こういった私から学べます. べき乗,累乗,2乗とは \(a^n\)におけるべき乗,累乗,2乗の違いは以下になります. べき乗:\(a^n\)(aとnは任意の数) 累乗: ...
続きを見る
-
-
【C言語】平方根を計算するsqrt/sqrtf/sqrtl関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 平方根を計算するsqrt/sqrtf/sqrtl関数
|
double sqrt(double x); float sqrtf(float x); long double sqrtl(long double x); |
sqrt/sqrtf ...
続きを見る
-
-
【C言語】ユークリッド距離を計算するhypot/hypotf/hypotl関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 本記事は,以下の記事を理解していることを前提とします. ユークリッド距離を計算するhypot/hypotf/hypotl関数 [crayon ...
続きを見る
-
-
【C言語】四捨五入,切り捨て,切り上げする標準ライブラリ関数と自作関数【round/floor/ceil関数】
こういった悩みにお答えします. こういった私から学べます. 四捨五入,切り捨て,切り上げ 四捨五入とは,数値計算における端数処理の1つです. ある桁までの値がほしい時は,その下の桁が4以下なら切り捨て ...
続きを見る
-
-
【C言語】整数に丸めるnearbyint/rint/lrint/llrint/lround/llround/trunc関数の違いと使い方
こういった悩みにお答えします. こういった私から学べます. C言語で整数に丸めるnearbyint/rint/lrint/llrint/lround/llround/trunc関数 C言語で整数に丸め ...
続きを見る
-
-
【C言語】frexp/frexpf/frexpl関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. frexp/frexpf/frexpl関数
|
double frexp(double x, int *exp); float frexpf(float x, int *exp); long double frexpl(long double x, int *exp); |
frexp/frexpf/fr ...
続きを見る
-
-
【C言語】ldexp/ldexpf/ldexpl関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. ldexp/ldexpf/ldexpl関数
|
double ldexp(double x, int exp); float ldexpf(float x, int exp); long double ldexpl(long double x, int exp); |
ldexp/ldexpf/ld ...
続きを見る
-
-
【C言語】modf/modff/modfl関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. modf/modff/modfl関数
|
double modf(double x, double *iptr); float modff(float x, float *iptr); long double modfl(long double x, long double *iptr); |
modf/modff/modfl関数 ...
続きを見る
-
-
【C言語】浮動小数点数の剰余演算ができるfmod/remainder関数の使い方
こういった悩みにお答えします. こういった私から学べます. C言語で剰余演算子(%)を利用すれば整数で剰余演算ができます. しかし,浮動小数点数(実数)では剰余演算子で剰余演算はできません. そこで, ...
続きを見る
complex.h
-
-
【C言語】複素数型の四則計算(足し算,引き算,掛け算,割り算)と標準ライブラリ関数の使い方
こういった悩みにお答えします. こういった私から学べます. C言語のC99規格で複素数型が採用されたことはご存知ですか? しかし,あまり広く使われていないので,使い方がわからないですよね. そんなあな ...
続きを見る
time.h
-
-
【C言語】sleep/usleep/nanosleep/clock_nanosleep関数の使い方
こういった悩みにお答えします. こういった私から学べます. sleep関数
|
unsigned int sleep(unsigned int seconds); |
sleep関数は,引数で指定した秒数をスリープします. s ...
続きを見る
-
-
【C言語】time関数で現在時刻の取得
こういった悩みにお答えします. こういった私から学べます. time関数
|
time_t time(time_t *tloc); |
time関数とは,現在時刻を秒単位で返す関数です. 返す値は ...
続きを見る
-
-
【C言語】clock関数でプログラムの実行時間の計測
こういった悩みにお答えします. こういった私から学べます. C言語でプログラムの実行時間の計測 C言語でプログラムの実行時間の計測方法を紹介します. 本記事で紹介する実行時間とは,プログラムが実際に実 ...
続きを見る
-
-
【C言語】タイマと割り込み処理の書き方
こういった悩みにお答えします. こういった私から学べます. タイマと割り込み タイマとは,予め設定した時間を経過した後に,その旨を通知するためのハードウェアの仕組みです. タイマを利用することで,周期 ...
続きを見る
regex.h
-
-
【C言語】regcomp/regexec/regerror/regfree関数で正規表現の検索【grep/sed/awkコマンドでも紹介】
こういった悩みにお答えします. こういった私から学べます. 正規表現 正規表現とは,文字列の集合を一つの文字列で表現する方法です. 正規表現を利用すると,文字列の検索や比較を柔軟に行うことができます. ...
続きを見る
dirent.h
-
-
【C言語】ディレクトリの操作関数【作成,削除,オープン,読み込み,クローズ】
こういった悩みにお答えします. こういった私から学べます. ディレクトリの操作関数 ディレクトリの操作関数を紹介します. 具体的には,LinuxのGCC/Clangで以下の関数の使い方を解説します. ...
続きを見る
unistd.h
-
-
【C言語】低レベル入出力関数「open/close/read/write/lseek関数」の使い方
こういった悩みにお答えします. こういった私から学べます. C言語の低レベル入出力関数「open/close/read/write/lseek関数」の使い方を紹介します. printf/scanfファ ...
続きを見る
-
-
【C言語】プロセスの生成と実行【fork/wait/execve/execl/getpid/getppid関数】
こういった悩みにお答えします. こういった私から学べます. プロセス プロセスとは,OSが管理するプログラムのインスタンスのことです. プロセス間ではメモリ空間を共有しませんが,同じプロセス内のスレッ ...
続きを見る
-
-
【C言語】デーモンの作り方【daemon関数とfork/setsid関数の方法を解説】
こういった悩みにお答えします. こういった私から学べます. 本記事は以下の内容を理解していることを前提とします. デーモン(Daemon)とは デーモン(Daemon)とは,LinuxのようなUnix ...
続きを見る
-
-
【C言語】getopt/getopt_long関数の使い方
こういった悩みにお答えします. こういった私から学べます. getopt関数
|
int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind; |
getopt関数は,コマンドライン引数(オプション)を解 ...
続きを見る
-
-
【C言語】sleep/usleep/nanosleep/clock_nanosleep関数の使い方
こういった悩みにお答えします. こういった私から学べます. sleep関数
|
unsigned int sleep(unsigned int seconds); |
sleep関数は,引数で指定した秒数をスリープします. s ...
続きを見る
pthread.h
-
-
【C言語】スレッドの生成と実行【pthread,マルチスレッド,スレッドIDの取得】
こういった悩みにお答えします. こういった私から学べます. スレッド スレッドとは,OSにおけるプログラムの実行単位です. スレッドが管理する情報はプロセスより少ないので,スレッド間のコンテキストスイ ...
続きを見る
-
-
【C言語】ミューテックスとは
こういった悩みにお答えします. こういった私から学べます. 本記事ではスレッドとプロセスを理解している前提で説明します. スレッドとプロセスを学びたいあなたはこちらからどうぞ. ミューテックス ミュー ...
続きを見る
-
-
【C言語】POSIXスレッドのRead-Write Lockの使い方
こういった悩みにお答えします. こういった私から学べます. 本記事ではスレッド,プロセス,ミューテックス,セマフォを理解している前提で説明しますので,これらを学びたいあなたはこちらからどうぞ. POS ...
続きを見る
semaphore.h
-
-
【C言語】セマフォとは
こういった悩みにお答えします. こういった私から学べます. 本記事ではスレッドとプロセスを理解している前提で説明します. スレッドとプロセスを学びたいあなたはこちらからどうぞ. セマフォ セマフォとは ...
続きを見る
setjmp.h
-
-
【C言語】setjmp/longjmp関数の使い方
こういった悩みにお答えします. こういった私から学べます. setjmp/longjmp関数 setjmp/longjmp関数は,他の関数(グローバル)にジャンプ(移動)するgoto文を実行する方法で ...
続きを見る
search.h
-
-
【C言語】線形探索と二分探索で数値と文字列の検索【lfind/lsearch/bsearch関数と自作関数】
こういった悩みにお答えします. こういった私から学べます. 線形探索と二分探索 線形探索とは,n個の配列のデータを前から(または後ろから)順番に検索する探索アルゴリズムです. 線形探索の最悪計算量は\ ...
続きを見る
-
-
【C言語】二分探索木の操作関数の使い方【tsearch/tfind/tdelete/twalk/twalk_r/tdestroy関数】
こういった悩みにお答えします. こういった私から学べます. 二分探索木の操作関数 二分探索木の操作関数を紹介します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
typedef enum { preorder, postorder, endorder, leaf } VISIT; void *tsearch(const void *key, void **rootp, int (*compar)(const void *, const void *)); void *tfind(const void *key, void *const *rootp, int (*compar)(const void *, const void *)); void *tdelete(const void *key, void **rootp, int (*compar)(const void *, const void *)); void twalk(const void *root, void (*action)(const void *nodep, VISIT which, int depth)); void twalk_r(const void *root, void (*action)(const void *nodep, VISIT which, void *closure), void *closure); void tdestroy(void *root, void (*free_node)(void *nodep)); |
tsearch/ ...
続きを見る
-
-
【C言語】ハッシュテーブルの管理関数の使い方【hcreate/hsearch/hdestroy/hcreate_r/hsearch_r/hdestroy_r関数】
こういった悩みにお答えします. こういった私から学べます. ハッシュテーブルの管理関数 ハッシュテーブルの管理関数を紹介します.
|
int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void); int hcreate_r(size_t nel, struct hsearch_data *htab); int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab); void hdestroy_r(struct hsearch_data *htab) |
hc ...
続きを見る
sched.h
-
-
【C言語】cpu_set_tデータ構造体とCPU_SETマクロの使い方
こういった悩みにお答えします. こういった私から学べます. cpu_set_tデータ構造体 cpu_set_tデータ構造体は,CPU集合を表現します. CPU集合は,どのCPUが何の操作を許可している ...
続きを見る
-
-
【C言語】sched_setaffinity/sched_getaffinity/sched_getcpu関数の使い方【tasksetコマンドでスレッドを特定のCPUで実行】
こういった悩みにお答えします. こういった私から学べます. 本記事では,以下の記事の内容を理解していることを前提とします. sched_setaffinity/sched_getaffinity/sc ...
続きを見る
-
-
【C言語】LinuxにおけるリアルタイムスケジューリングRMとEDFの実装
こういった悩みにお答えします. こういった私から学べます. C言語でLinuxにおけるリアルタイムスケジューリングRMとEDFの実装 C言語でLinuxにおけるリアルタイムスケジューリングRMとEDF ...
続きを見る
-
-
【C言語】Linuxにおける資源アクセスプロトコルPIPの実装
こういった悩みにお答えします. こういった私から学べます. 【C言語】Linuxにおける資源アクセスプロトコルPIPの実装 C言語でLinuxにおける資源アクセスプロトコルPIPの実装を紹介します. ...
続きを見る
mqueue.h
-
-
【C言語】POSIXのメッセージキューの使い方
こういった悩みにお答えします. こういった私から学べます. 【C言語】POSIXのメッセージキュー POSIXのメッセージキューとは,プロセス間でメッセージの形でのデータのやり取りを行うことができる仕 ...
続きを見る
assert.h
-
-
【C言語】静的アサーション_Static_assertと動的アサーションassertマクロの使い方
こういった悩みにお答えします. こういった私から学べます. 静的アサーション_Static_assertと動的アサーションassertマクロ C言語の静的アサーション_Static_assertと動的 ...
続きを見る
sys/socket.h
-
-
【C言語】INETドメイン/UNIXドメインソケット通信によるネットワークプログラミング【TCP,UDP】
こういった悩みにお答えします. こういった私から学べます. C言語のINETドメイン/UNIXドメインソケット通信によるネットワークプログラミング 本記事では,C言語のINETドメイン/UNIXドメイ ...
続きを見る
-
-
【C言語】疑似DHCPクライアント・サーバ
こういった悩みにお答えします. こういった私から学べます. 疑似DHCPクライアント・サーバ C言語で疑似DHCPクライアント・サーバを紹介します. 本記事は以下の内容を理解していることを前提とします ...
続きを見る
sys/sysinfo.h
-
-
【C言語】Linuxのプロセッサ数を取得するget_nprocs_conf/get_nprocs関数の使い方【CPUのホットプラグ】
こういった悩みにお答えします. こういった私から学べます. get_nprocs_conf/get_nprocs関数
|
int get_nprocs_conf(void); int get_nprocs(void); |
get_npro ...
続きを見る
sys/types.h,sys/stat.h
-
-
【C言語】名前付きパイプを作成するmkfifo関数の使い方
こういった悩みにお答えします. こういった私から学べます. C言語で名前付きパイプを作成するmkfifo関数
|
int mkfifo(const char *pathname, mode_t mode); |
mkfifo関数は,名前 ...
続きを見る
sys/mman.h
-
-
【C言語】メモリをロックするmlock/mlockall関数の使い方【mmap関数も解説】
こういった悩みにお答えします. こういった私から学べます. mlock/mlockall関数
|
int mlock(const void *addr, size_t len); int munlock(const void *addr, size_t len); int mlockall(int flags); int munlockall(void); |
mlock/mlockall関数は,呼び ...
続きを見る
sys/select.h,sys/poll.h,sys/epoll.h
-
-
【C言語】select/pselect/poll/ppoll/epoll関数の違い
こういった悩みにお答えします. こういった私から学べます. C言語のselect/pselect/poll/ppoll/epoll関数の違いを紹介します. select/pselect関数 [cray ...
続きを見る
wchar.h,locale.h
-
-
【C言語】ワイド文字の使い方【日本語】
こういった悩みにお答えします. こういった私から学べます. 【C言語】ワイド文字 ワイド文字とは,主にC/C++言語における文法において,一般的に従来の8ビット文字よりも大きなサイズを持つコンピュータ ...
続きを見る
dlfcn.h
-
-
【C言語】動的リンク,静的リンク,動的ロードの違い【dlopen/dlerror/dlsym/dlclose関数】
こういった悩みにお答えします. こういった私から学べます. 本記事ではC言語で動的リンク,静的リンク,動的ロードの違いを紹介します. どれも似ている方式ですが,本記事を読むと違いがわかります. 【C言 ...
続きを見る
conio.h(Windows/Visual Studio)
-
-
【C言語】キーボード入力をチェックするWindowsの_kbhit関数とLinuxの自作関数
こういった悩みにお答えします. こういった私から学べます. 【C言語】キーボード入力をチェックするWindowsの_kbhit関数とLinuxの自作関数 C言語でキーボード入力をチェックするWindo ...
続きを見る
C言語のアルゴリズム
整数のアルゴリズム
-
-
【C言語】約数の判定【約数の個数と和の計算】
こういった悩みにお答えします. こういった私から学べます. 約数の判定 約数とは,ある整数nに対してnを割り切る整数またはそれらの集合のことです. 約数の定義は,「整数a ≠ 0がnの約数である場合, ...
続きを見る
-
-
【C言語】ユークリッドの互除法で最大公約数と最小公倍数の計算【オイラーのトーシェント関数】
こういった悩みにお答えします. こういった私から学べます. ユークリッドの互除法 ユークリッドの互除法とは,2つの自然数の最大公約数を計算するアルゴリズムです. 2つの自然数a,b(a≧b)について, ...
続きを見る
-
-
【C言語】10進数と2進数,8進数,16進数の相互変換
こういった悩みにお答えします. こういった私から学べます. 10進数と2進数の相互変換 10進数と2進数を相互変換するコードは以下になります. [crayon-66ea349557a106534838 ...
続きを見る
-
-
【C言語】素数の判定方法【エラトステネスの篩(ふるい),サンダラムの篩,アトキンの篩】
こういった悩みにお答えします. こういった私から学べます. C言語で素数の判定方法を紹介します. 具体的には,エラトステネスの篩(ふるい),エラトステネスの篩を改良したサンダラムの篩とアトキンの篩を解 ...
続きを見る
-
-
【C言語】pow関数と自作関数でべき乗,累乗,2乗の計算
こういった悩みにお答えします. こういった私から学べます. べき乗,累乗,2乗とは \(a^n\)におけるべき乗,累乗,2乗の違いは以下になります. べき乗:\(a^n\)(aとnは任意の数) 累乗: ...
続きを見る
-
-
【C言語】べき乗と累乗を高速に計算【仮想通貨で利用】
こういった悩みにお答えします. こういった私から学べます. べき乗と累乗を高速に計算 べき乗と累乗を高速に計算する方法を紹介します. ここで,\(a^n\)におけるべき乗と累乗の違いは以下になります. ...
続きを見る
-
-
【C言語】パスカルの三角形
こういった悩みにお答えします. こういった私から学べます. パスカルの三角形 パスカルの三角形は,二項定理における係数(二項係数)を三角形状に並べたものです. 二項定理とは,\((x + y)^n\) ...
続きを見る
-
-
【C言語】素因数分解アルゴリズム【試し割り法,SPF法】
こういった悩みにお答えします. こういった私から学べます. 本記事は,素数の判定方法を理解していることを前提とします. 素因数分解 素因数分解とは,ある正の整数(自然数)を素数の積の形で表すことです. ...
続きを見る
-
-
【C言語】クレジットカード番号の認証で利用されるLuhnアルゴリズム
こういった悩みにお答えします. こういった私から学べます. クレジットカード番号の認証で利用されるLuhnアルゴリズム(Luhn mod 10アルゴリズム) Luhn(ルーン)アルゴリズムは,ハンス・ ...
続きを見る
スワップのアルゴリズム
-
-
【C言語】swap関数とswapマクロで値を交換
こういった悩みにお答えします. こういった私から学べます. swapとは swapとは,2つの変数の値を交換する手法です. swapを関数として実装する場合,関数の引数を変数にすると,C言語では値渡し ...
続きを見る
-
-
【C言語】バイトオーダーの交換(バイトスワップ)方法の紹介【x86-64命令のコード】
こういった悩みにお答えします. こういった私から学べます. C言語でバイトオーダーの交換(バイトスワップ) C言語でバイトオーダーの交換(バイトスワップ)方法を紹介します. バイトスワップはOSで利用 ...
続きを見る
-
-
【C/C++言語】順列と組み合わせを全通り表示
こういった悩みにお答えします. こういった私から学べます. C/C++言語で順列と組み合わせを全通り表示する方法を紹介します. 順列と組み合わせの個数を計算する方法を知りたいあなたは,関数の再帰呼び出 ...
続きを見る
計算のアルゴリズム
-
-
【C言語】最小値,平均値,最大値,合計値,標準偏差,中央値の計算
こういった悩みにお答えします. こういった私から学べます. 最小値,平均値,最大値,合計値,標準偏差の計算 C言語で最小値,平均値,最大値,合計値,標準偏差を計算する標準ライブラリ関数はないので,自作 ...
続きを見る
-
-
【C言語】2次元配列で行列の四則演算(足し算,引き算,掛け算,割り算)【逆行列】
こういった悩みにお答えします. こういった私から学べます. 行列の四則演算(足し算,引き算,掛け算,割り算) C言語で行列の四則演算(足し算,引き算,掛け算,割り算)を紹介します. 行列の四則演算でよ ...
続きを見る
-
-
【C言語】ベクトルの内積と外積の計算
こういった悩みにお答えします. こういった私から学べます. ベクトルの内積と外積 ベクトル\(\vec{a}\)と\(\vec{b}\)の内積\(\vec{a} \cdot \vec{b}\)とは,\ ...
続きを見る
-
-
【C言語】連立一次方程式の解法【ガウスの消去法(掃き出し法),クラメルの公式(クラメルの法則),ガウス・ザイデル法,ヤコビ法】
こういった悩みにお答えします. こういった私から学べます. 本記事は行列を習得していることを前提とします. C言語で連立一次方程式の解法 C言語で連立一次方程式の解法を紹介します. 具体的には,以下の ...
続きを見る
-
-
【C言語】一次方程式,二次方程式,三次方程式,四次方程式の解の公式
こういった悩みにお答えします. こういった私から学べます. C言語で一次方程式,二次方程式,三次方程式,四次方程式の解の公式 C言語で一次方程式,二次方程式,三次方程式,四次方程式の解の公式を紹介しま ...
続きを見る
-
-
【C/C++言語】多元数とは【一元数,二元数,四元数,八元数】
こういった悩みにお答えします. こういった私から学べます. 多元数 多元数は,実数体上の単位的多元環の元を表す数学の用語です. 多元数の通常型には以下があります. 一元数 二元数 四元数 八元数 それ ...
続きを見る
文字列処理のアルゴリズム
-
-
【C言語】配列の文字列を逆順に入れ替える方法
こういった悩みにお答えします. こういった私から学べます. 【C言語】配列の文字列を逆順に入れ替える方法 C言語で配列の文字列を逆順に入れ替える方法を紹介します. 例えば,"abc"という文字列を"c ...
続きを見る
-
-
【C言語】文字列の回転
こういった悩みにお答えします. こういった私から学べます. C言語で文字列の回転 C言語で文字列の回転方法を紹介します. 文字列の回転とは,文字列自身の先頭と末尾がつながっているとみなして回転すること ...
続きを見る
-
-
【C言語】CSVファイルの読み書き【C++/Python言語でも紹介】
こういった悩みにお答えします. こういった私から学べます. C言語でCSVファイルの読み書き C言語でCSVファイルの読み書き方法を紹介します. CSV(Comma-Separated Values) ...
続きを見る
-
-
【C言語】Base64のエンコードとデコード【イーサリアムで利用】【a64l/l64a関数】
こういった悩みにお答えします. こういった私から学べます. Base64 Base64とは,バイナリデータをテキストデータに変換するエンコード方式です. テキストデータには,以下の65文字を利用します ...
続きを見る
-
-
【C言語】Base58のエンコードとデコード【ビットコインとリップルで利用】
こういった悩みにお答えします. こういった私から学べます. Base58 Base58は,ビットコインで利用するために開発されたテキストベースのエンコード方式です. Base58はリップル等の他の仮想 ...
続きを見る
-
-
【C/C++言語】おすすめのJSONライブラリ
こういった悩みにお答えします. こういった私から学べます. JSON JSONとは,JavaScript Object Notationの略で,データ記述言語の1つです. JSONの特徴は,軽量なテキ ...
続きを見る
探索のアルゴリズム
-
-
【C言語】線形探索と二分探索で数値と文字列の検索【lfind/lsearch/bsearch関数と自作関数】
こういった悩みにお答えします. こういった私から学べます. 線形探索と二分探索 線形探索とは,n個の配列のデータを前から(または後ろから)順番に検索する探索アルゴリズムです. 線形探索の最悪計算量は\ ...
続きを見る
-
-
【C言語】二分探索木の操作関数の使い方【tsearch/tfind/tdelete/twalk/twalk_r/tdestroy関数】
こういった悩みにお答えします. こういった私から学べます. 二分探索木の操作関数 二分探索木の操作関数を紹介します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
typedef enum { preorder, postorder, endorder, leaf } VISIT; void *tsearch(const void *key, void **rootp, int (*compar)(const void *, const void *)); void *tfind(const void *key, void *const *rootp, int (*compar)(const void *, const void *)); void *tdelete(const void *key, void **rootp, int (*compar)(const void *, const void *)); void twalk(const void *root, void (*action)(const void *nodep, VISIT which, int depth)); void twalk_r(const void *root, void (*action)(const void *nodep, VISIT which, void *closure), void *closure); void tdestroy(void *root, void (*free_node)(void *nodep)); |
tsearch/ ...
続きを見る
-
-
【C言語】ハッシュテーブルとは【ハッシュチェイン法,オープンアドレス法】
こういった悩みにお答えします. こういった私から学べます. ハッシュテーブル(ハッシュ表) ハッシュテーブル(ハッシュ表)とは,キー(key)と値(value)のペアでデータを管理し,キーに対応する値 ...
続きを見る
-
-
【C言語】ハッシュテーブルの管理関数の使い方【hcreate/hsearch/hdestroy/hcreate_r/hsearch_r/hdestroy_r関数】
こういった悩みにお答えします. こういった私から学べます. ハッシュテーブルの管理関数 ハッシュテーブルの管理関数を紹介します.
|
int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void); int hcreate_r(size_t nel, struct hsearch_data *htab); int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab); void hdestroy_r(struct hsearch_data *htab) |
hc ...
続きを見る
-
-
【C言語】strchr/strrchr関数の使い方と自作関数
こういった悩みにお答えします. こういった私から学べます. 【C言語】strchr/strrchr関数
|
char *strchr(const char *s, int c); char *strrchr(const char *s, int c); |
strchr/strrchr関 ...
続きを見る
-
-
【C言語】文字列の検索方法【ナイーブ法,KMP法,BM法】【strstr/strcasestr関数】
こういった悩みにお答えします. こういった私から学べます. C言語で文字列の検索 C言語で文字列の検索方法を紹介していきます. 文字列の検索とは,ある文字列の中に特定の部分文字列があるかどうか判定する ...
続きを見る
-
-
【C言語】最短経路問題を解くアルゴリズム【ダイクストラ法,ワーシャル・フロイド法】
こういった悩みにお答えします. こういった私から学べます. 最短経路問題 最短経路問題とは,グラフ理論において重み付きグラフの与えられた2つのノード間を結ぶ経路の中で,重みが最小の経路を求める最適化問 ...
続きを見る
-
-
【C言語】Nクイーン問題の解き方【総当たり法,バックトラック法】
こういった悩みにお答えします. こういった私から学べます. Nクイーン問題の解き方 Nクイーン問題とは,チェスのエイトクイーン問題を一般化したものです. エイトクイーンとは,チェスの盤とコマを使用した ...
続きを見る
ソートのアルゴリズム
-
-
【C言語】qsort/qsort_r関数の使い方
こういった悩みにお答えします. こういった私から学べます. qsort関数
|
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); |
qsort関数は,nmemb個の大きさsizeの要素をもつ ...
続きを見る
-
-
【C言語】配列の要素を並び替えるソートアルゴリズム
こういった悩みにお答えします. こういった私から学べます. 配列の要素を並び替えるソートアルゴリズム C言語で配列の要素を並び替えるソートアルゴリズムを紹介します. ここで,安定ソート(ソートが安定す ...
続きを見る
-
-
【C言語】マルチコアプロセッサ向け並行ソートアルゴリズム【並列ソート】
こういった悩みにお答えします. こういった私から学べます. C言語でマルチコアプロセッサ向けソートアルゴリズム C言語でマルチコアプロセッサ向け並行ソートアルゴリズムを紹介します. ※並列ソートと言及 ...
続きを見る
-
-
【C言語】ヒストグラムの作り方【乱数,アスタリスク,縦横の棒グラフ】
こういった悩みにお答えします. こういった私から学べます. 【C言語】ヒストグラムの作り方 C言語でヒストグラムの作り方を紹介します. 具体的には,乱数で数値を作成し,アスタリスクで縦横の棒グラフを表 ...
続きを見る
-
-
【C言語】有向非巡回グラフ(DAG:Directed Acyclic Graph)とトポロジカルソート【幅優先探索,深さ優先探索】【仮想通貨で利用】
こういった悩みにお答えします. こういった私から学べます. 有向非巡回グラフ(DAG:Directed Acyclic Graph) 有向非巡回グラフ(DAG:Directed Acyclic Gra ...
続きを見る
C言語のデータ構造
-
-
【C言語】連結リストとは【片方向リスト,双方向リスト,双方向循環リスト】
こういった悩みにお答えします. こういった私から学べます. 連結リスト 連結リスト(linked list)とは,順序付きデータ構造として定義されるデータ構造です. ※連結リストのことを単にリストと省 ...
続きを見る
-
-
【C言語】スタックとは【x86-64のアセンブリ言語で解説】
こういった悩みにお答えします. こういった私から学べます. スタック スタックとは,データを後入れ先出し(LIFO:Last In First Out)で保持するデータ構造です. スタックには,2つの ...
続きを見る
-
-
【C言語】キューとは【FIFOキュー,優先度キュー,二項ヒープ,赤黒木】
こういった悩みにお答えします. こういった私から学べます. 【C言語】キューとは キューとは,データを先入れ先出し(First In First Out)で保持するデータ構造です. キューにデータに入 ...
続きを見る
-
-
【C言語】おすすめのリングバッファのライブラリ
こういった悩みにお答えします. こういった私から学べます. embedded-resources:おすすめのリングバッファのライブラリ embedded-resourcesは,C言語でおすすめのリング ...
続きを見る
-
-
【C/C++言語】おすすめの動的メモリ確保ライブラリ
こういった悩みにお答えします. こういった私から学べます. 本記事は,以下の動的メモリ確保の記事を理解していることを前提とします. C/C++言語でおすすめの動的メモリ確保ライブラリ C/C++言語で ...
続きを見る
-
-
【C言語】ハッシュテーブルとは【ハッシュチェイン法,オープンアドレス法】
こういった悩みにお答えします. こういった私から学べます. ハッシュテーブル(ハッシュ表) ハッシュテーブル(ハッシュ表)とは,キー(key)と値(value)のペアでデータを管理し,キーに対応する値 ...
続きを見る
-
-
【C言語】マークル木とマークルパトリシア木【ビットコインとイーサリアムで利用】
こういった悩みにお答えします. こういった私から学べます. 本記事では,ハッシュテーブルを理解していることを前提とします. マークル木(マークルハッシュ木,ハッシュ木)【ビットコインで利用】 マークル ...
続きを見る
-
-
【C言語】有向非巡回グラフ(DAG:Directed Acyclic Graph)とトポロジカルソート【幅優先探索,深さ優先探索】【仮想通貨で利用】
こういった悩みにお答えします. こういった私から学べます. 有向非巡回グラフ(DAG:Directed Acyclic Graph) 有向非巡回グラフ(DAG:Directed Acyclic Gra ...
続きを見る
C言語で数値解析