isxdigit

isxdigitは、指定された文字が16進数で使われるa-f, A-F, 0-9であるかどうかを判定する。

Man page of ISALPHA
C言語関数辞典 - isxdigit

入力された文字列が16進数の可能性があるかどうかをチェックしてみる。

明らかに16進数でない場合は、"Not Hexadecimal."と出る。

$ ./isxdigit
1234abc
Hexadecimal.
$ ./isxdigit
FFF333
Hexadecimal.
$ ./isxdigit
fAFa222
Hexadecimal.
$ ./isxdigit
AbCdEFG123
Not Hexadecimal.
$

最後のは'G'が入ってるから、明らかに16進数ではない。
とはいえ、これを通ったからといって、16進数であることが確定するわけではなく、16進数である可能性が残るだけの話だが。
(全部a-f, A-Fだけという文字列の可能性もあるし、10進数の可能性だってある。)

Sample/c/isxdigit/isxdigit/src/isxdigit at master · bg1bgst333/Sample · GitHub

isupper

isupperは、指定された文字がアルファベットの大文字かどうかを判定する。

Man page of ISALPHA
C言語関数辞典 - isupper

ここまでくると、ただ大文字かどうかを判定するのではつまらない。
パスワードに適した文字列かどうかを判定してみる。

アルファベットでもない数字でもない記号が含まれていて、かつ、アルファベットの大文字が含まれていて、かつ、アルファベットの小文字が含まれている場合に、"String suitable for password!"と出力する。

$ ./isupper
abcde
$ ./isupper
abcd1234
$ ./isupper
abcd+-
$ ./isupper
AbCd+-
String suitable for password!
$

よく考えると、数字とアルファベットが混在しているという条件が入ってなかったが、まあいいか。

Sample/c/isupper/isupper/src/isupper at master · bg1bgst333/Sample · GitHub

islower

islowerは、指定された文字がアルファベットの小文字かどうかを判定する。

Man page of ISALPHA
C言語関数辞典 - islower

小文字が含まれているか判定する。

islowerの前に、一応isalphaもかけているが、これはいらないかも。

$ ./islower
ABCDE
Not a lower alphabet.
$ ./islower
ABcDE
A lower alphabet.
$ ./islower
abcde
A lower alphabet.
$

このように判定できる。

Sample/c/islower/islower/src/islower at master · bg1bgst333/Sample · GitHub

isalnum

isalnumは、指定された文字がアルファベットまたは数字かどうかを判定する。

Man page of ISALPHA
C言語関数辞典 - isalnum

アルファベットでもない数字でもない記号などの文字が含まれているかをチェックする。

isalnumが偽であれば、記号などの文字が含まれていることになる。

$ ./isalnum
abcde
A alphabet or a digit.
$ ./isalnum
ab1cd
A alphabet or a digit.
$ ./isalnum
12345
A alphabet or a digit.
$ ./isalnum
a1+b2
Not a alphabet and Not a digit.
$

最後のは記号である'+'が含まれている。

Sample/c/isalnum/isalnum/src/isalnum at master · bg1bgst333/Sample · GitHub

isdigit

isdigitは、指定された文字が数字かどうかを判定する。

Man page of ISALPHA
C言語関数辞典 - isdigit

入力された文字列の中に数字が入っているかどうかをチェックするプログラムをつくる。
(パスワードチェックなどの基本となるような処理を作ってみる。)

fgetsで取得した文字列をfor文で1文字ずつisdigitに渡して数字だったらループを抜けて処理を終了する。

$ vi isdigit.c
$ gcc isdigit.c -o isdigit
$ ./isdigit
ABCDEabcde
A digit is not exist.
$ ./isdigit
ABCDE10abcde
A digit is exist.
$

このように数字があるかどうかをチェックできる。

Sample/c/isdigit/isdigit/src/isdigit at master · bg1bgst333/Sample · GitHub

puts

putsは指定された文字列に改行を付加して標準出力に出力する。

Man page of PUTS
C言語関数辞典 - puts
(putsの引数がchar *になっているのは間違いで、正しくはconst char *のはず。)

改行が付加されるところに注意。

文字列リテラルと文字配列、両方試してみる。
改行は付けてない。

$ vi puts.c
$ gcc puts.c -o puts
$ ./puts
ABCDE
FGHIJ
$

改行を付けてないが、きちんと改行されて出力されている。

Sample/c/puts/puts/src/puts at master · bg1bgst333/Sample · GitHub

stdin

stdinは標準入力ストリームを表すマクロで、実態は標準入力を指すファイルポインタ。

Man page of STDIN

これを使って、fgetsの処理を標準入力で行う。getsの代わりになる。

fgetsの第3引数にstdinを指定し、標準入力から文字列を読み込む。
最後に改行が入ってしまうので、それをNULL文字に変える処理もする。

$ vi stdin.c
$ gcc stdin.c -o stdin
$ ./stdin
ABCDE
[ABCDE
]
[ABCDE]
$

最終的に入力文字列だけにできた。

Sample/c/stdin/stdin/src/stdin at master · bg1bgst333/Sample · GitHub