C言語

エスケープシーケンス

プログラム中に改行やタブを挿入するときなどに使うエスケープシーケンス。エスケープシーケンス - 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: …

pow

powは、冪乗(aのx乗)を計算する。Man page of POW C言語関数辞典 - pow, powf, powlaのx乗であれば、第1引数は、基数aを指定し、第2引数は、指数xを指定する。入力されたaとxから、aのx乗を計算する。 $ vi pow.c $ gcc pow.c -o pow /usr/bin/ld: /tmp/ccrx…

abs

absは、渡された整数値の絶対値を求める。Man page of ABS C言語関数辞典 - abs数学関数だが、math.hではなくstdlib.hに宣言されている。入力された整数値の絶対値を求めてみる。 $ vi abs.c $ gcc abs.c -o abs $ ./abs x: 5 d = 5 $ ./abs x: -5 d = 5 $5…

strstr

strstrは、指定された文字列から、指定された部分文字列を探す。Man page of STRSTR C言語関数辞典 - strstr"ABAB~"と続く、途中までは一致してそうだが、そうでない文字列に対して、"ABC"がある場所を探す。みつかったら、pとtargetを出力。 $ vi strstr.c…

memchr

memchrは、指定された範囲のメモリ領域から指定された値を探す。Man page of MEMCHR C言語関数辞典 - memchrstrchrと違い、こちらもNULL文字の先まで探索する。"ABCXDEF"の'X'の部分に'\0'を入れても、'E'を探せるか試す。 $ vi memchr.c $ gcc memchr.c -o …

strpbrk

strpbrkは、指定された文字列(文字配列)から、指定された文字の集合のいずれかを探す。Man page of STRPBRK C言語関数辞典 - strpbrk元の文字列を破壊せずに、strtokのように、トークンを切り出す。targetの先頭アドレスをポインタsに格納しておき、sからカ…

strtok

strtokは、指定された文字列(文字配列)を、指定された区切り文字の集合のいずれかで区切って、文字列を切り出す。Man page of STRTOK C言語関数辞典 - C言語Tips集 文字列を指定文字で分割する気を付けなければいけないのは、渡した文字列に指定された区切り…

strrchr

strrchrは、指定された文字列から指定された文字を後ろから探す。Man page of STRCHR C言語関数辞典 - strrchr戻り値に、見つかった位置のアドレスが返ってくる。 文字列の最後のアドレスから、戻り値のポインタを引くと、ポインタ演算で距離がわかるので、…

strchr

strchrは、指定された文字列から指定された文字を探す。Man page of STRCHR C言語関数辞典 - C言語Tips集 文字列の先頭から文字を検索する戻り値に、見つかった位置のアドレスが返ってくる。 そこから文字列の先頭アドレスを引くと、ポインタ演算で距離がわ…

strncmp

strncmpは、指定された2つの文字列を指定の数の文字の分だけ比較する。Man page of STRCMP C言語関数辞典 - strncmpmemcmpでは、NULL文字('\0')の先まで比較して、違うかどうかをチェック出来た。 strncmpはn文字比較するが、NULL文字('\0')の先までは比較し…