なんだかGoodVibes

日々の勉強メモです。

C

【C】数値の絶対値を取得する

C

こんにちは。 本日はC言語メモです。 概要 int型の場合 long型の場合 long long型の場合 概要 stdlib.hに含まれる標準関数を使用して 数値の絶対値を取得したいと思います。 型に応じた関数が用意されているので それぞれのサンプルを作ってみました。 int型…

【C】qsort関数を使用してソートしてみる

C

こんにちは。 本日はC言語メモです。 概要 C言語には標準ライブラリに配列をソートする qsort()という関数があります。 この関数は、stdlib.hに含まれています。 qsort()のプロトタイプは void qsort(void *base, size_t num, size_t size, int (*compar)(co…

【C】エンディアン変換をしてみる

C

こんにちは。 本日はC言語メモです。 リトルエンディアンからビッグエンディアン 値の場合 配列の場合 ビッグエンディアンからリトルエンディアン 値の場合 配列の場合 リトルエンディアンからビッグエンディアン 今回はint型の値を変換します。 リトルエン…

【C】環境のエンディアンを調べる

C

こんにちは。 本日はC言語メモです。 エンディアンを調べる 自分の環境のエンディアンを調べる方法は int型の「1」の先頭1バイトを確認する方法がとても楽です。 先頭バイトが1ならリトルエンディアン(01,00,00,00) 0ならビッグエンディアン(00,00,00,01)と…

【C】キューを作ってみる

C

こんにちは。 本日はC言語メモです。 概要 キューのメイン処理 使用する側のコード 実行結果 概要 今回はキューを実装してみたいと思います。 キューとは... 先入れ先出し(FIFO: First-In-First-Out)のデータ管理です。 つまり、最初にいれたデータから取り…

【C】引数で3次元配列を受け取って要素を出力する

C

こんにちは。 本日はC言語メモです。 概要 要素数が確定している場合 要素数を引数で受け取る場合 オフセットを計算する場合 概要 行、列、値といった3次元配列を引数で受け取り、 要素を出力したい。。。 そんな場合に使えそうなサンプルを本記事ではメモし…

【C】INIファイルを読んで構造体にセットしてみる

C

こんにちは。 本日はC言語メモです。 概要 サンプルコード 概要 以前、CSVを読み込む記事を書きました。 【C】CSVを読んで構造体にセットしてみる - なんだかGoodVibes そこで紹介したサンプルを元にINI形式のファイルを 読み込むサンプルを作ってみました。…

【C】標準ライブラリを使って文字の判定(ctype.h)

C

こんにちは。 本日はC言語メモです。 概要 文字が英字かどうかの判定 文字が数字かどうかの判定 文字が英字もしくは数字かどうかの判定 文字が空白文字かどうかの判定 概要 標準ライブラリヘッダである「ctype.h」に含まれる関数を使って 文字の判定をやって…

【C】CSVを読んで構造体にセットしてみる

C

こんにちは。 本日はC言語メモです。 概要 複数行のファイルを読み込み、 カンマ区切りのファイル(CSV)を読み込んで 構造体にセットしてみたいと思います。 サンプルコード 今回のサンプルの流れとしては ファイルからデータを取得 カンマで分割して構造体に…

【C】複数行のテキストを読む

C

こんにちは。 本日はC言語メモです。 概要 読み込む行数に制限があるパターン 読み込む行数に制限がないパターン 概要 本記事では複数行存在するファイルの読み込みについて 以下の2パターンの方法を記載しています。 読み込む行数に制限があるパターン 読み…

【C】2次元配列をつくってみる

C

こんにちは。 本日はC言語メモです。 概要 本記事では、静的2次元配列と動的2次元配列を 作るサンプルを記載します。 今までの配列に関する記事は以下を参照ください。 【C】[超入門] 配列いろいろ - なんだかGoodVibes 【C】[超入門] 動的配列を作ってみる …

【C】文字列の置換と分割

C

こんにちは。 本日はC言語メモです。 概要 置換(もとの文字列を変更するパターン) 置換(もとの文字列を変更しないパターン) 分割(もとの文字列を変更するパターン) 分割(もとの文字列を変更しないパターン) 概要 本日の記事は、文字列の置換と分割です。 サ…

【C】16進数、8進数、2進数でprintfする

C

こんにちは。 本日はC言語メモです。 概要 16進数でprintf 8進数でprintf 2進数でprintf 概要 タイトルにある通り、printfを使用して 各進数の出力を行っていきたいと思います。 16進数、8進数は標準のフォーマット指定子を使用して 出力を行っています。 2…

【C】ノンブロッキングのTCP通信サンプル

C

こんにちは。 本日はC言語メモです。 概要 サーバ側 ノンブロッキングの設定 accept()の判定 recv()の判定 クライアント側 ノンブロッキングの設定 send()の判定 実行結果 サーバ側 クライント側 概要 今までのTCP記事はブロッキングでした。 【C】TCP通信処…

【C】UDP通信処理で使われる関数まとめとエコーサーバ

C

こんにちは。 本日はC言語メモです。 概要 UDP通信処理で使われる関数 socket() bind() recvfrom() sendto() close() エコーサーバサンプル クライアント サーバ 概要 UDP通信処理にて、ソケット作成 〜送受信までの処理で サーバ側、クライアント側で 使用…

【C】TCP通信で可変長のデータを取得する

C

こんにちは。 本日はC言語メモです。 概要 ヘッダファイル クライアント側 サーバ側 実行結果 概要 TCP通信でデータのやり取りを行う際 固定長のデータ部の情報を持つヘッダと 可変長のデータ部といった構成になっている場合が よくありますよね。 本記事で…

【C】TCP通信処理で使われる関数まとめとエコーサーバ

C

こんにちは。 本日はC言語メモです。 概要 TCP通信処理で使われる関数 socket() bind() listen() accept() connect() read() send() close() エコーサーバサンプル クライアント サーバ 概要 TCP通信処理にて、ソケット作成 〜送受信までの処理で サーバ側、…

【C】名前付きパイプを使用してプロセス間通信してみる

C

こんにちは。 本日はC言語メモです。 概要 サーバ側サンプルコード 1. FIFOファイルを作成 2. FIFOファイルをオープンする 3. 受信データを読み込む 4. FIFOファイルをクローズする 5. FIFOファイルを削除する クライアント側サンプルコード 1. FIFOファイル…

【C】文字列の比較(strcmp、strncmp、memcmp)

C

こんにちは。 本日は、C言語メモです。 概要 strcmp()を使って文字列比較 strncmp()を使って文字列比較 memcmp()を使って文字列比較 概要 本記事では、以下の関数を使用して 文字列を比較する方法について記載します。 strcmp() strncmp() memcmp() strcmp()…

【C】処理の一時停止(sleep、usleep、nanosleep)

C

こんにちは。 本日はC言語メモです。 概要 sleep()のサンプルコード usleep()のサンプルコード nanosleep()のサンプルコード 概要 本記事では、C言語で以下の関数を使用して 処理を一時停止させる方法について記載しています。 sleep() usleep() nanosleep()…

【C】構造体のアライメント

C

こんにちは。 本日はC言語メモです。 概要 shortが最大メンバとなる構造体 intが最大メンバとなる構造体 doubleが最大メンバとなる構造体 概要 C言語の構造体を定義するとき、アライメントに注意する必要があります。 アライメントとは、CPUが効率よくデータ…

【C】signal関数を使ってシグナル検知

C

こんにちは。 本日はC言語メモです。 概要 サンプルコード 概要 無限にループしているアプリを作ったとき 「Ctrl + C」でアプリを停止します。 このとき、終了する前になにか処理をしたい場合ってありますよね。 本記事では、signal()関数を使用して「Ctrl +…

【C】時刻を文字列で取得する

C

こんにちは。 本日はC言語メモです。 概要 asctimeを使用して取得 ctimeを使用して取得 strftime を使用して取得 gettimeofday を使用してミリ秒まで取得 概要 本記事は、時刻を文字列で取得する方法について いくつかの方法を記載しています。 固定書式で取…

【C】定義済みマクロを使ってみる

C

こんにちは。 本日はC言語メモです。 概要 サンプルコード 概要 定義済みマクロは、C言語のコンパイラやプリプロセッサによって 自動的に定義されているマクロのことです。 定義済みマクロは、コンパイル時に展開されます。 本記事では、以下の定義済みマク…

【C】[超入門] 動的配列を作ってみる

C

こんにちは。 本日はC言語メモです。 概要 動的配列の作成 動的配列のサイズを変更する 概要 通常の配列は、宣言時以外では要素数を変更することができません。 でも、配列の要素数を動的に決定したい場合もありますよね。 本記事は、malloc()を使用して 動…

【C】[超入門] constの使い方

C

こんにちは。 本日はC言語メモです。 変数を定数として宣言 ポインタ変数を定数として宣言 ポインタが指す値を定数にする(定数へのポインタ) ポインタ自体を定数にする ポインタが指す値、ポインタ自体を定数にする 関数の引数を定数として宣言 変数を定数と…

【C】[超入門] define(マクロ)を使ってみる

C

こんにちは。 本日はC言語メモです。 概要 defineを使って数値に名前をつける defineを使って文字列に名前をつける defineを使って関数に名前をつける 概要 defineを使用すると、数値や文字列、式などを定義することができます。 defineで定義したものは、コ…

【C】fseekでファイル位置を変更してバイナリファイル読み込み

C

こんにちは。 本日はC言語メモです。 概要 サンプルコード 概要 ファイルの読み書きについては 以下の記事でも記載しているのでご参考までに。 【C】[超入門] fopenとfcloseを使用してファイル開閉 - なんだかGoodVibes 【C】バイナリファイルの読み書き - …

【C】バイナリファイルの読み書き

C

こんにちは。 本日はC言語メモです。 概要 サンプルコード 概要 バイナリファイルの読み書きで使用する関数は以下です。 fopen : ファイルオープン fclose : ファイルクローズ fwrite : ファイル書き込み fread : ファイル読み込み fopenとfcloseについては…

【C】[超入門] fopenとfcloseを使用してファイル開閉

C

こんにちは。 本日はC言語メモです。 概要 ファイルの読み込み モードがr、r+の場合 モードがw+の場合 モードがa+の場合 ファイルの書き込み モードがr+の場合 モードがw、w+の場合 モードがa、a+の場合 概要 ファイルの開閉を行うには以下を使用します。 FI…