C言語

putc

putcは、fputcと同じく、指定されたストリームに、指定された1文字を書き込む。 ただし、putcはマクロ定義されている処理系もある。 そのため、複数回評価されることによる副作用を伴う式は、渡すべきではないとのこと。fputc, putc - cppreference.com今回…

fputc

fputcは、指定されたストリームに、指定された1文字を書き込む。C言語関数辞典 - fputc fputc, putc - cppreference.comファイルと標準出力に出してみる。として、実行すると、 $ vi fputc.c $ gcc fputc.c -o fputc $ ls fputc fputc.c $ ./fputc ABCDE$ ls…

setvbuf

setvbufで、setbufより入出力バッファの詳細について設定できる。C言語関数辞典 - setvbuf setvbuf - cppreference.com setvbuf | Programming Place Plus C言語編 標準ライブラリのリファレンス /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出</stdio.h>…

freopen

freopenは、指定のストリームをいったん閉じて、新しいストリームを開いて、指定のファイルと紐づける。C言語関数辞典 - freopen freopen, freopen_s - cppreference.com コンピューター:C言語講座:freopenについて ファイル処理 | C++ プログラミング解説…

volatile

volatileを付けるとlongjmpでも、最適化抑止されて、値が戻ることは無くなる。[法大奥山研究室]C言語:17.2. volatilexはこれまでの普通のint型に対し、yはvolatileのint型。 $ vi volatile.c $ gcc -O volatile.c -o volatile $ ./volatile x = 20 y = 20…

longjmp

longjmpで、保存した実行コンテキストの場所に飛び戻ることが出来る。[法大奥山研究室]C言語:17.2. volatile問題は、setjmpしてからlongjmpするまでに変更された変数の値である。 volatileを付けていない場合は、longjmp後でも、setjmpが呼び出される前の…

setjmp

setjmpで、その呼び出した時の実行コンテキスト(実行情報)を保存できる。C言語関数辞典 - setjmp いにしえのsetjmp()とlongjmp()、あるいはCの例外とは - Qiita setjmp | Programming Place Plus C言語編 標準ライブラリのリファレンスこれを呼んで実行コン…

ラベル

goto文をほとんど使わないので、goto文の飛び先のラベルについて、気になることを試してみた。goto•¶ /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ /* main関数 */ int main(void){ /* 変数の宣言 */ int i; /* ループ変数i */ int j; /*</stdio.h>…

goto文

gotoを使うと、指定したラベルの位置まで飛ぶことが出来る。goto•¶ C言語 - ラベルBASICの名残であり、現代では使ってはいけないとはよく言われる。 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ /* main関数 */ int main(void){ /* 変数</stdio.h>…

setlocale

setlocaleでロケールを取得したり、設定できる。Man page of SETLOCALE C言語辞典 setlocale() C言語辞典 localeconv()これ1つで設定と取得ができるが、使い方がわかりにくく、理解してなかった部分もあったので改めて。実行すると、デフォルトのロケール…

localeconv

localeconvでロケール情報を取得できる。Man page of LOCALECONV C言語関数辞典 - localeconvデフォルトのロケール("C"かな?)情報で、小数点の記号や、整数部のセパレータ(何桁かごとに区切る記号)がどうなるか調べる。実行すると、 $ vi localeconv.c $ gcc…

stderr

stdinが標準入力のファイルポインタ、stdoutが標準出力のファイルポインタを表すように、stderrは標準エラー出力のファイルポインタを表す。Man page of STDINperrorは標準エラー出力に出力する。 そして、stderrを指定すれば、fprintfでも標準エラー出力に…

strerror

strerrorを使えとのことなので、strerrorの引数にerrnoを渡してみる。Man page of STRERRORstrerror(errno)でも、 $ vi strerror.c $ gcc strerror.c -o strerror $ ./strerror errno = 0 errno = 2 strerror(errno) = No such file or directory fopen erro…

sys_errlist

sys_errlistというグローバル配列にエラーメッセージが格納されている。 これに添字でerrnoを指定すると、そのerrnoのエラーメッセージを取得できる。sys_errlist(3) manページsys_errlist[errno]の中身は、 $ vi sys_errlist.c $ gcc sys_errlist.c -o sys_…

errno

何らかのエラーが発生した時、グローバル変数errnoにどんなエラーが発生したかエラー番号が格納される。Man page of ERRNOエラー発生前と、エラー発生後に、errnoを出力。 存在しないtest.txtを開いて、どうなるか見てみる。 $ vi errno.c $ gcc errno.c -o …

リダイレクト(入力)

ファイルの中身を標準入力として受け取ることもできる。https://www.kushiro-ct.ac.jp/yanagawa/C-2015/26-0722/index.html もう一度基礎からC言語 第9回 制御構造と変数(5)~forとwhileに関するあれこれ 入出力の切り替え~リダイレクトとパイプdest.cは、…

リダイレクト(出力)

プログラムの結果の出力先を変えることをリダイレクトという。https://www.kushiro-ct.ac.jp/yanagawa/C-2015/26-0722/index.html もう一度基礎からC言語 第9回 制御構造と変数(5)~forとwhileに関するあれこれ 入出力の切り替え~リダイレクトとパイプsrc.…

パイプライン

コマンドとコマンドの間にパイプ('|')を入れることで、最初のコマンドから、次のコマンドに結果を渡すことができる。 pipeシステムコールはこのパイプを扱うものだが、pipeでなくてもコマンドを受け取ることはできる。 コマンドを受け渡していくパイプのつな…

FILE

改めて、FILE型(FILE構造体)について調べていく。Man page of FOPEN Bioinformaticsのお勉強: ファイル記述子、ファイル型、ファイルポインタ、stdin、stdout、stderrについての考察stdio.h/usr/includeに移動してstdio.hを開く。FILEで検索"FILE"で検索。bi…

エスケープシーケンス

プログラム中に改行やタブを挿入するときなどに使うエスケープシーケンス。エスケープシーケンス - Wikipediaこれによると、実はエスケープシーケンスは3種類あって、 改行などのエスケープコード(エスケープ文字) 文字集合の指示・呼び出しのシーケンス(特…

ferror

ferrorは、指定されたファイルポインタ(ストリーム)でエラーが発生しているかどうかを判定する。Man page of FERROR C言語関数辞典 - ferror読み取り専用でファイルを開いた時に、書き込みをしようとしたらどうなるか。feofのトピックで"test.txt"を読み取り…

feof

feofは、指定されたファイルポインタ(ストリーム)がEOFかどうかを判定する。Man page of FERROR C言語関数辞典 - feoffgetcの場合はEOFを返すので戻り値で判定できるが、fgetsやfreadなど他の関数の場合は読み込めなかった理由を戻り値だけで判定できない。 …

fgetc

fgetcは、指定されたストリームから、文字を取得する。 getcと違い、こちらは関数で実装することになっている。Man page of FGETC C言語関数辞典 - fgetcファイルの終わりまで1文字ずつ読み込んでみる。1文字ずつ読み込み、これ以上読み込めないファイルの終…

getc

getcは、指定されたストリームから、文字を取得する。Man page of FGETC C言語関数辞典 - getc標準入力と、ファイルから、それぞれ文字を取得してみる。test1.txtに"A"だけ書いておく。 $ cat test1.txt A $ vi getc.c $ gcc getc.c -o getc $ ./getc stdin:…

srand

srandは、疑似乱数のシード(乱数種)を変更する。Man page of RAND C言語関数辞典 - C言語Tips集 擬似乱数を発生させる疑似乱数を作るのに使われるのが、シードと呼ばれる値で、これが毎回違うと、毎回違う乱数のパターンになる。今回は、実行時にtimeの戻り…

rand

randは、疑似乱数を発生させる。Man page of RAND C言語関数辞典 - C言語Tips集 擬似乱数を発生させる戻り値として、0以上、RAND_MAX以下の整数をランダムに返す。 RAND_MAXまでいらない場合は、戻り値をとある数nで割った余りを求めれば、0からn - 1までの…

ceil

実数xに対して、xより小さくない最小の整数を返す関数を天井関数という。天井関数ceilは、天井関数の計算を行う。Man page of CEIL C言語関数辞典 - ceil, ceilf, ceillつまり、切り上げである。 負の数の場合、例えば-4.5なら、-4に切り上がる。 $ vi ceil.…

floor

実数xに対して、xを超えない最大の整数を、ガウス記号"[]"を使って、"[x]"と記述することがある。 引数xに対して、このような整数を返す関数を床関数という。床関数floorは、床関数の計算を行う。Man page of FLOOR C言語関数辞典 - floor, floorf, floorl要…

atan

atanは、逆正接値を計算する。Man page of ATAN C言語関数辞典 - atan, atanf, atanlつまり、tanの値から、角度のラジアン値を計算するということ。acosと同様に、tanの値を引数として渡すと、ラジアン値が戻り値として返る。 $ vi atan.c $ gcc -lm atan.c …

acos

acosは、逆余弦値を計算する。Man page of ACOS C言語関数辞典 - C言語Tips集 アークコサイン(逆余弦)を計算するつまり、cosの値から、角度のラジアン値を計算するということ。asinと同様に、cosの値を引数として渡すと、ラジアン値が戻り値として返る。 $ v…