Cプログラミング

 Computer >> コンピューター >  >> プログラミング >> Cプログラミング
  1. Clangツールを活用したC/C++コードフォーマッターの自作方法

    このチュートリアルでは、Clangツールを活用してC/C++のコードフォーマットツール(フォーマッター)を作成する方法を解説します。プロジェクト全体のソースコードを一括で整形できるため、チーム開発におけるコードスタイルの統一に役立ちます。 環境構築 まず、必要なパッケージをインストールします。以下のコマンドを実行してください。 sudo apt install python sudo apt install clang-format-3.5 次に、現在のユーザーが読み書き権限を持っている場所にPythonスクリプトファイルを作成します。 スクリプトの例 以下は、カレントディレクトリ以下を再帰的

  2. C/C++でコルーチンを実装する方法をわかりやすく解説

    この記事では、C/C++におけるコルーチン(coroutines)の仕組みについて、実際のサンプルプログラムを通じて解説します。コルーチンとは、2つのルーチン間で実行の制御を相互に切り替えることができる特殊な制御命令のことです。通常の関数呼び出しでは、呼び出された関数が完了すると制御は必ず元の呼び出し元に戻りますが、コルーチンでは処理を中断した地点の状態を保持したまま制御を渡し、次回の呼び出し時にその続きから実行を再開できます。この特性を活かすことで、イテレータや協調的マルチタスクなどが実装可能になります。標準のC言語にはコルーチン構文が用意されていないため、ここでは static変数 と s

  3. C++で各母音が偶数回出現する最長部分文字列を求める方法

    問題の概要文字列 s が与えられたとき、「各母音が偶数回出現する」最長の部分文字列の長さを求めます。つまり、a、e、i、o、u のそれぞれが、部分文字列内に必ず偶数回現れる必要があります。例として、文字列が helloworld の場合、答えは 8 になります。アルゴリズムの考え方この問題は、各文字を読み進めながら「母音の偶奇の状態」を記録していくことで効率的に解けます。5つの母音それぞれについて出現回数が偶数か奇数かを 0 と 1 で表し、これを 01010 のような 5 文字の状態文字列として管理します。同じ状態文字列が 2 回現れた場合、その間の部分文字列では各母音の出現回数の偶奇が変化

  4. C/C++におけるINT_MAXとINT_MINの基本と実践的な応用例

    このチュートリアルでは、C/C++で使用されるINT_MAXとINT_MINについて詳しく解説します。 INT_MAXとINT_MINは、ヘッダーファイル(<climits> や <limits.h>)で定義されているマクロであり、int型が表現できる最大値と最小値を示します。これらを活用することで、変数や要素の初期値として「事実上の上限・下限」を設定でき、アルゴリズムの実装がシンプルかつ安全になります。 基本的な使い方 まずは、INT_MAXとINT_MINの値を出力する簡単なプログラムを見てみましょう。 #include<bits/stdc++.h> i

  5. C/C++の整数リテラル入門:プレフィックスとサフィックスの使い方を解説

    本記事では、C/C++における整数リテラル、特に「プレフィックス(接頭辞)」と「サフィックス(接尾辞)」の役割について詳しく解説します。 整数リテラルとは? 整数リテラルとは、ソースコード内に直接記述される整数値のことです。C/C++では、数値の表現方法や型を細かく制御するために、リテラルに対してプレフィックスとサフィックスを付けることができます。 プレフィックス(接頭辞):数値の基数(進数)を表します。例えば 0x10 のように 0x を付けると16進数として扱われます。 サフィックス(接尾辞):数値の型を表します。例えば 8465484156155LL のように LL を付けると lon

  6. C・C++のループ処理を徹底解説!for文とwhile文の使い方

    本記事では、C言語およびC++における「ループ(繰り返し処理)」の基本について、サンプルコードを交えながらわかりやすく解説します。 ループとは? プログラミングにおけるループとは、特定のブロック内のコードを何度も繰り返し実行するための仕組みです。同じコード行を何回も書き並べる代わりに、ループを使えば短く効率的なコードが実現できます。 これは「DRY(Dont Repeat Yourself:同じことを繰り返すな)」と呼ばれるプログラミングの重要な原則にも沿った書き方であり、コードの可読性や保守性の向上にもつながります。 C・C++でよく使われる代表的なループには、for文とwhile文がありま

  7. C/C++のlseek()でn番目ごとのバイトを読み取り、別のファイルに書き込む方法

    このチュートリアルでは、C言語のシステムコール lseek() を使って、ファイルから n バイトおきにデータを読み出し、その内容を別のファイルへ書き込むプログラムについて解説します。処理の概要このプログラムでは、2つのテキストファイル(start.txt と end.txt)を用意します。目的は、1つ目のファイル(入力ファイル)から内容を読み込み、lseek() を使ってファイルポインタを移動させながら、n バイトごとに1バイトずつ抜き出し、2つ目のファイル(出力ファイル)へ書き込むことです。lseek() は、ファイルディスクリプタが指す読み書き位置(オフセット)を変更するためのシステムコ

  8. C/C++のmemcpy()関数の使い方と実例解説

    この記事では、C++ STLにおけるmemcpy()関数の動作、構文、および具体的な使用例について詳しく解説します。 memcpy()とは? memcpy()関数は、C++ STLに組み込まれた標準関数の一つで、<cstring>ヘッダーファイルで定義されています。この関数はメモリブロックをコピーするために使用され、あるメモリ位置から別のメモリ位置へ、指定されたバイト数分のデータを転送します。 関数の実行結果は、データのバイナリコピーとなります。重要な点として、memcpy()は終端のNULL文字やその他の終端記号をチェックしません。単純にソースから指定されたバイト数(num)をそ

  9. C/C++のmbsrtowcs()関数とは?構文・パラメータ・戻り値と実例を解説

    本記事では、C++ STLに含まれるstd::mbsrtowcs()関数の仕組み、構文、および具体的な使用例について詳しく解説します。 std::mbsrtowcs()とは? std::mbsrtowcs()は、C++ STLに組み込まれている関数で、<cwchar>ヘッダーファイル内で定義されています。関数名のmbsrtowcs()は「multibyte string to wide character string(マルチバイト文字列からワイド文字列への変換)」を意味し、再開可能な変換状態を維持しながら、NULL終端されたマルチバイト文字列をワイド文字列表現へと変換します。この

  10. C/C++のmbrtoc16()関数とは?構文・戻り値・使用例をわかりやすく解説

    この記事では、C++ STLにおけるstd::mbrtoc16()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。 std::mbrtoc16()とは? std::mbrtoc16()は、C++ STLに標準で用意されている組み込み関数の一つで、<cuchar>ヘッダーファイルに定義されています。この関数は、ナローマルチバイト文字をUTF-16形式の文字表現へと変換するために使用されます。 関連付けられた文字ポインタがNULLでなく、その他のパラメータもすべて正しく指定されていれば、対応する16ビット文字への変換が実行されます。 構文 size_t mbrtoc

  11. C/C++のmbrtoc32()関数とは?構文・戻り値・使用例をわかりやすく解説

    本記事では、C++ STLに用意されているstd::mbrtoc32()関数について、その仕組み・構文・具体的な使用例を交えながら詳しく解説します。 std::mbrtoc32()とは? std::mbrtoc32()は、C++ STLに組み込まれている関数で、<cuchar>ヘッダーファイル内で定義されています。この関数は、ナローマルチバイト文字(マルチバイト文字列)をUTF-32形式の文字表現へ変換するために使用されます。 関連する文字ポインタがNULLでなく、その他のパラメータも適切に指定されていれば、対応する32ビット文字への変換が実行されます。 構文 size_t mbr

  12. C/C++のputwchar()関数とは?使い方と実行例をわかりやすく解説

    この記事では、C++ STLにおけるputwchar()関数の動作、構文、および具体的な使用例について詳しく解説します。 putwchar()とは? putwchar()関数は、C++ STLに組み込まれている関数の一つで、<cwchar>ヘッダーファイル内で定義されています。この関数は、ワイド文字(wide character)を標準出力デバイスに書き込むために使用されます。引数として渡されたワイド文字を受け取り、システムの標準出力(stdout)に出力します。 なお、putwchar()は<cstdio>ヘッダーで定義されているputchar()関数のワイド文字版

  13. C++のstd::mbrtowc()関数を解説!マルチバイト文字をワイド文字に変換する方法と実例

    この記事では、C++ STLにおけるstd::mbrtowc()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。 std::mbrtowc()とは? std::mbrtowc()は、C++標準ライブラリ(STL)に組み込まれている関数で、<cwchar>ヘッダーファイル内で定義されています。関数名の「mbrtowc」は「multibyte to wide character」を意味しており、その名の通り、ナローマルチバイト文字列をワイド文字へ変換する役割を担います。つまり、マルチバイトエンコーディングで表現された1文字を、ワイド文字(wchar_t)の形式に変換す

  14. 【C/C++】#ifdefによるOS判別マクロで、OSに依存しないコードを書く方法

    OSに依存しないコードとは ここで紹介するのは、実行環境のOSがWindowsであってもLinuxやmacOSであっても動作し、それぞれのOSに応じた処理を自動的に切り替えられるC/C++プログラムの書き方です。例えば、「Windowsならdirコマンド、それ以外ならlsコマンドでファイル一覧を取得したい」といったケースで役立ちます。 OSを判別する定義済みマクロ 多くのC/C++コンパイラには、コンパイル時に実行対象のOSを検出するための定義済みマクロが用意されています。GCCコンパイラで利用できる主なマクロは以下の通りです。 _WIN32: 32ビット・64ビット両方のWindows

  15. 競技プログラミングでC/C++コードを効率的に書くための実践テクニック

    競技プログラミングにおける効率的なC/C++コーディングとは 競技プログラミングにおいて最も重要なのは、効率的なコードを書くことです。最適化された高速なコードは実行時間に直結し、プログラマーの順位を大きく左右します。 本記事では、競技プログラミングでC/C++のコードを効率よく書くために知っておきたい基本用語と、すぐに使える実践的なテクニックを解説します。 押さえておきたい基本用語 テンプレート(Template):特定の型に依存しない汎用的なコードを記述するための仕組みです。 マクロ(Macro):名前を付けたコード断片のことで、#defineによって定義されます。 ベクター(Vecto

  16. CとC++の両方でコンパイルできるのに結果が異なるプログラムの作り方

    CでもC++でもコンパイル・実行できるにもかかわらず、実行結果が異なるプログラムを作る方法を紹介します。言語仕様の微妙な違いにより、まったく同じソースコードでもCとC++で異なる動作をするケースがいくつか存在します。ここでは、その代表例を2つ取り上げて解説します。1. 文字リテラルの扱いの違いCとC++では、文字リテラルに対する扱いが異なります。Cでは文字リテラルは整数型(int)として解釈されますが、C++ではchar型として扱われます。この違いを利用すると、sizeof演算子の結果に差が生まれます。サンプルコード#include<stdio.h> int main(){

  17. C/C++のrand()とsrand()関数の使い方を徹底解説!乱数生成の基本

    本記事では、C++ STLにおけるrand()関数とsrand()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。rand()とは?rand()はC++ STLに組み込まれた関数で、<cstdlib>ヘッダーファイル内で定義されています。この関数は一連の乱数(ランダムな数値)を生成するために使用され、コード内でランダムな数値が必要になった場面で活用できます。例えば、C++で双六(すごろく)やサイコロを使うゲームを作成する際、1から6までのランダムな数値を生成したい場合があります。そんなときにrand()が役立ちます。乱数はアルゴリズムによって生成されており、この関

  18. C / C++(3.5)関数の基礎:宣言・定義・引数を徹底解説

    関数は機械のようなものです。機械は入力を受け取り、それを処理して出力を生成します。同様に、関数も値を受け取り、その値に対して何らかの操作を行い、結果を出力します。機械が動き出すには人が手動で入力を与える必要があるように、関数もプログラマーによって呼び出されたときに初めて実行されます。関数は言語によって呼び名が異なる場合がありますが、次の2つの共通した特徴を持っています。処理すべき命令文のシーケンス(一連の命令)を含んでいるその命令群は名前で識別され、その名前が関数を参照するなぜ関数を使うのか?再利用性 − 同じ機能を複数の場所で使いたい場合、同じ処理を何度も書くのではなく、一度だけ関数を作成し

  19. C言語で「1」が連続しないバイナリ文字列の数を数える方法

    問題概要この記事では、長さ n のすべてのバイナリ文字列の中から、「1」が隣り合って現れない文字列の総数を C 言語で求める方法を解説します。2進数(バイナリ)とは2進数は数値表現の手法の一つで、デジタルシステムで最も広く利用されています。使用する記号は「0」と「1」の2種類だけで、オン/オフのように動作状態が2つしかないデバイス(例えば「開」か「閉」のどちらかの状態を持つスイッチなど)で自然に表現できるのが特徴です。そして「バイナリ文字列」とは、0 と 1 のみで構成される文字列のことを指します。具体例で理解する入力:n = 2出力:3説明:条件を満たすのは「00」「01」「10」の3つだけ

  20. C言語におけるwhile(1)とwhile(0)の違いを徹底解説

    はじめに:whileループの基本 C言語において「while」キーワードは、引数として渡した条件式が成立している間、ブロック内のコードを繰り返し実行するためのループ構文です。条件式の評価結果は「真(true)」か「偽(false)」のいずれかとなるため、条件が真であれば処理が繰り返され、偽であればブロック内のコードは一切実行されません。 この仕組みを踏まえると、while(1)とwhile(0)の違いは「条件として何を渡すか」によるものだと理解できます。以下でそれぞれの動作を詳しく見ていきましょう。 while(1):常に真と評価される無限ループ while(1)は、条件が常に真として扱われ

Total 1445 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:46/73  20-コンピューター/Page Goto:1 40 41 42 43 44 45 46 47 48 49 50 51 52