C言語

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."…

isupper

isupperは、指定された文字がアルファベットの大文字かどうかを判定する。Man page of ISALPHA C言語関数辞典 - isupperここまでくると、ただ大文字かどうかを判定するのではつまらない。 パスワードに適した文字列かどうかを判定してみる。アルファベットで…

islower

islowerは、指定された文字がアルファベットの小文字かどうかを判定する。Man page of ISALPHA C言語関数辞典 - islower小文字が含まれているか判定する。islowerの前に、一応isalphaもかけているが、これはいらないかも。 $ ./islower ABCDE Not a lower al…

isalnum

isalnumは、指定された文字がアルファベットまたは数字かどうかを判定する。Man page of ISALPHA C言語関数辞典 - isalnumアルファベットでもない数字でもない記号などの文字が含まれているかをチェックする。isalnumが偽であれば、記号などの文字が含まれて…

isdigit

isdigitは、指定された文字が数字かどうかを判定する。Man page of ISALPHA C言語関数辞典 - isdigit入力された文字列の中に数字が入っているかどうかをチェックするプログラムをつくる。 (パスワードチェックなどの基本となるような処理を作ってみる。)fget…

puts

putsは指定された文字列に改行を付加して標準出力に出力する。Man page of PUTS C言語関数辞典 - puts (putsの引数がchar *になっているのは間違いで、正しくはconst char *のはず。)改行が付加されるところに注意。文字列リテラルと文字配列、両方試してみ…

stdin

stdinは標準入力ストリームを表すマクロで、実態は標準入力を指すファイルポインタ。Man page of STDINこれを使って、fgetsの処理を標準入力で行う。getsの代わりになる。fgetsの第3引数にstdinを指定し、標準入力から文字列を読み込む。 最後に改行が入って…

gets

getsは入力された文字列を指定された配列などに格納する。Man page of GETS C言語関数辞典 - getsスペースで区切られることがないので、scanfより最後まで文字列を取得したい場合に使う。 ただし、セキュリティ上の問題から、この関数は非推奨になっている。…

isalpha

isalphaは、指定された文字がアルファベットかどうかを判定する。Man page of ISALPHA C言語関数辞典 - isalphaisalpha.cで、getcharで入力された文字を取得し、cに代入。 isalphaにcを渡して、真なら"Alphabet"、偽なら"Not Alphabet"、と出力する。 $ vi i…

getchar

getcharは、標準入力から入力された文字を取得できる。Man page of FGETC C言語関数辞典 - getchargetchar.cで、入力フォームを作って、int型で返ってくるので、int型変数icに格納。 その後、char型にもキャストして、char型変数ccにも代入。 icは整数値とし…

putchar

putcharは、指定された文字を標準出力に出力する。Man page of PUTS C言語関数辞典 - putcharputchar.cで、putcharの引数の型はintであることに注意。 文字リテラルの型もintである。 もちろんchar型でも基本的には問題ない。基本的には・・・。 (特殊な例を…