C言語

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')の先までは比較し…

strncat

strncatは、指定された文字列を指定された文字数分連結する。Man page of STRCAT C言語関数辞典 - strncat文字列が文字数より少なくても多くてもNULL終端はされる模様。 $ vi strncat.c $ gcc strncat.c -o strncat strncat.c: 関数 ‘main’ 内: strncat.c:15…

strncpy

strncpyは、指定された文字列を指定された文字数コピーする。Man page of STRCPY C言語関数辞典 - strncpyコピー元のn文字目までにNULL終端が無い場合はNULL終端されない。 コピー元文字列がnより短い場合は、NULL終端される。"VWXYZ"でnが3の場合は、NULL終…

memcmp

memcmpは、2つの指定の範囲のメモリ領域の内容が同じかどうか比較する。Man page of MEMCMP C言語関数辞典 - memcmpstrcmpはNULL終端までの範囲しかチェックしないが、memcmpはNULL終端関係なく指定されたバイト数分比較する。patternとtarget、2つの文字列…

memcpy

memcpyは、指定の範囲のメモリ領域を、指定の範囲にコピーする。Man page of MEMCPY C言語関数辞典 - memcpystrcpyは、NULL文字('\0')で終端されていれば、その部分もコピーするが、memcpyは第3引数に指定した文字数分のコピーしかしない。buf1とbuf2をすべ…

memset

memsetは、指定の範囲のメモリ領域を、指定の値で埋める。Man page of MEMSET C言語関数辞典 - memset一番使われるのは、すべてを'\0'で埋めるバッファのクリア。 あとは、特定の文字で埋めるというのも当然できる。 $ vi memset.c $ gcc memset.c -o memset…

tolower

tolowerは、指定された文字がアルファベットの大文字の時、小文字に変換する。Man page of TOUPPER C言語関数辞典 - tolower入力された文字列に大文字があったらすべて小文字に変換する。textのi番目、text[i]をtolowerに渡して、戻り値をtext[i]に代入し直…

toupper

toupperは、指定された文字がアルファベットの小文字の時、大文字に変換する。Man page of TOUPPER C言語関数辞典 - toupper入力された文字列に小文字があったらすべて大文字に変換してみる。textのi番目、text[i]をtoupperに渡して、戻り値をtext[i]に代入…

fflush

fflushは、バッファのフラッシュを行う。Man page of FFLUSH C言語関数辞典 - fflush入出力バッファの内容をいったん出力して、バッファを空にすることをフラッシュという。 前回の例で、setbufでNULLをセットしてバッファリングしないようにしたが、バッフ…

setbuf

setbufは、入出力バッファを設定するのに使う。Man page of SETBUF C言語関数辞典 - setbufprintf、scanf、fprintf、fscanf、などの標準入出力、ファイル入出力関数は、そのまま入出力してるわけではなく、バッファにいったん貯めてから、出力する。 (これを…

stdout

stdoutは標準出力ストリームを表すマクロで、実態は標準出力を指すファイルポインタ。Man page of STDINfgetsで標準入力のstdinを使ったように、fputsで標準出力のstdoutを使ってみる。fputsの第2引数にstdoutを指定する。 fputsは改行しないので、'\n'を入…

isxdigit

isxdigitは、指定された文字が16進数で使われるa-f, A-F, 0-9であるかどうかを判定する。Man page of ISALPHA C言語関数辞典 - isxdigit入力された文字列が16進数の可能性があるかどうかをチェックしてみる。明らかに16進数でない場合は、"Not Hexadecimal."…