C言語

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…

asin

asinは、逆正弦値を計算する。Man page of ASIN C言語関数辞典 - C言語Tips集 アークサイン(逆正弦)を計算するつまり、sinの値から、角度のラジアン値を計算するということ。asinに0を渡せば、0になるのは、角度が0°、つまり0(rad)の時。 asinに1を渡せば、1…

tan

tanは、正接値を計算する。Man page of TAN C言語関数辞典 - C言語Tips集 タンジェント(正接)を計算するtan30°は1 / √3、tan45°は1、tan60°は√3となる。 $ vi tan.c $ gcc -lm tan.c -o tan $ ./tan rad_0 = 0.000000 rad_30 = 0.523599 rad_45 = 0.785398 r…

cos

cosは、余弦値を計算する。Man page of COS C言語関数辞典 - cos, cosf, coslcos30°は√3 / 2、cos45°は1 / √2、sin60°は1 / 2、とsinとは逆になる。cos0°が1、cos90°は0。 $ vi cos.c $ gcc -lm cos.c -o cos $ ./cos rad_0 = 0.000000 rad_30 = 0.523599 ra…

sin

sinは、正弦値を計算する。Man page of SIN C言語関数辞典 - sin, sinf, sinl引数はラジアン単位で取るので、角度をラジアン単位に変換しないといけない。角度にπ / 180を掛けるとラジアンになる。 また、sin30°は1 / 2、sin45°は1 / √2、sin60°は√3 / 2、に…

M_PI(Windows)

M_PIをWindowsで使う場合は、ひと手間要る。Visual C++で円周率のM_PIを使う | 手っ取り早く教えてWin32 コンソール アプリケーションWin32 コンソール アプリケーションで、プロジェクト作成。M_PI.cを追加M_PI.cを追加し、 /* ヘッダファイルのインクルー…

M_PI

円周率πの値は、math.hにM_PIとして定義されている。man page M_PI section 3 円周率 M_PI と math.h小数点以下を指定しないデフォルトの%fだと、 $ vi M_PI.c $ gcc -lm M_PI.c -o M_PI $ ./M_PI M_PI = 3.141593 $せいぜいこんな精度。小数点以下の桁数を…

log10

log10は、10を底とする対数関数(常用対数)を計算する。Man page of LOG10 C言語関数辞典 - log10, log10f, log10l $ vi log10.c $ gcc -lm log10.c -o log10 $ ./log10 x: 1 log10(1.000000) = 0.000000 $ ./log10 x: 2 log10(2.000000) = 0.301030 $ ./log1…

log

logは、ネイピア数eを底とする対数関数(自然対数)を計算する。Man page of LOG C言語関数辞典 - log, logf, logl $ vi log.c $ gcc -lm log.c -o log $ ./log x: 1 log(1.000000) = 0.000000 $ ./log x: 2 log(2.000000) = 0.693147 $ ./log x: 3 log(3.0000…

exp

expは、自然対数の底であるネイピア数eの指数関数を計算する。Man page of EXP C言語関数辞典 - exp, expf, expl $ vi exp.c $ gcc -lm exp.c -o exp $ ./exp x: 1 exp(1.000000) = 2.718282 $ ./exp x: 2 exp(2.000000) = 7.389056 $ ./exp x: 3 exp(3.0000…

sqrt

sqrtは、平方根を計算する。Man page of SQRT C言語関数辞典 - sqrt, sqrtf, sqrtl入力された値の平方根を計算する。 $ vi sqrt.c $ gcc -lm sqrt.c -o sqrt $ ./sqrt x: 4 sqrt(4.000000) = 2.000000 $ ./sqrt x: 9 sqrt(9.000000) = 3.000000 $ ./sqrt x: …