string.h

strcmp (const char *s1, const char *s2 )

s1,s2文字列が同じかどうかを比較する関数。ヌル文字が出現した時点で比較は終了。

char s1[10]="abc\0def";
char s2[10]="abc\0hij";
if(strcmp(s1,s2) == 0){
  printf("同じ文字列");
}else{
  printf("異なる文字列");
}

出力

同じ文字列

strncmp (const char s1, const char s2, int n )

s1,s2文字列の始めの文字からn番目の文字までを比較する関数。ヌル文字が出現した時点で比較は終了。

memcmp (const void *s1, const void *s2, int n )

s1,s2の最初のメモリ領域からnバイトのメモリ領域の内容を比較する関数。
どんな型でも比較可能。ヌル文字は1バイトと認識されるため、確実にnバイト比較される。(当たり前だけれど、途中で一致していないと分かったらそこで比較終了)
そのため、strncmpではなくmemcmpを使うことも多い。

char s1[10]="abc\0def";
char s2[10]="abc\0hij";
if(strcmp(s1,s2,7) == 0){
  printf("同じ文字列");
}else{
  printf("異なる文字列");
}

出力

異なる文字列

stricmp (const char *s1, const char *s2 )

英字の大小を区別せず文字列比較。他はstrcmpと同じ。

stricmp (const char *s1, const char *s2, int n )

英字の大小を区別せず文字列比較。他はstrncmpと同じ。

ctype.h

isalnum (int c )

文字cが英数字かそれ以外かを調べる関数。
引数の文字一つを調べるため、char cではなくint cという書式になっている。
int cのcを、%cで文字表示すると、ASCLLコードc番が参照されますよね。少し紛らわしいですが、書式上そう書かざるを得ないだけで、引数cはほぼchar型でしか使われません。

char *c = "a1#"
for(int i=0; i<3; i++){
  if(isalnum(c[i]) == 0){
    printf("%cは英数字ではないです\n",c[i]);
  }else{
    printf("%cは英数字です\n",c[i]);
  }
}

出力

英数字です
英数字です
英数字ではないです

isalpha (int c )

文字cが英字かどうかを調べる。

isupper (int c )

文字cが英字の大文字かどうかを調べる。

islower (int c )

文字cが英字の小文字かどうかを調べる。

isdigit (int c )

文字cが10進数の数字かどうかを調べる。

isxdigit (int c )

文字cが16進数の数字かどうかを調べる。

iscntrl (int c )

isgraph (int c )

isprint (int c )

ispunct (int c )

isspace (int c )