【C言語】
isspace関数でスペース判定
空文字’\0’と
空文字列””と
空白文字’ ‘の違い

空文字’\0’と 空文字列””と 空白文字’ ’の違い

■空文字’\0’は空白文字ではない

//空文字(からもじ:null character)
//空の文字列(からのもじれつ:empty string)
//空白文字(くうはくもじ:white-space character)
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
/*  $man ascii
    011   9     09    HT  '\t' (horizontal tab)   
    012   10    0A    LF  '\n' (new line)         
    013   11    0B    VT  '\v' (vertical tab)     
    014   12    0C    FF  '\f' (form feed)        
    015   13    0D    CR  '\r' (carriage ret) 
    040   32    20    SPACE
*/
int main(void){
    for(int i = '\0';i<128;i++){
        if(!isspace(i)){    
            continue;
        }
        //white-space characters
        switch(i){
        case    '\t':   puts("水平タブ")    ;break;
        case    '\n':   puts("改行")        ;break;
        case    '\v':   puts("垂直タブ")    ;break;
        case    '\f':   puts("改ページ")    ;break;
        case    '\r':   puts("復帰")        ;break;
        case    ' ':    puts("空白")        ;break;
        default:        
            perror("想定外:ここには来ない");
            abort();
        }
    }
}

C言語の世界では
空文字とは’\0’の事です。
空白文字とは上記のisspace()関数で判定される
文字定数の事です。
空文字列とは””の事です。

空文字’\0’は
空白文字や
空文字列と紛らわしいので
終端文字と言う事を推奨します。


■空文字’\0’と空文字列””の違い

#include <stdio.h>
#include <ctype.h>
void    space(char *p){
    if(p == NULL){
        puts("NULLポインタ");
        return  ;
    }
    if(p[0] == '\0'){
        puts("先頭空文字=空文字列");
        return  ;
    }
    if(p[0] == ' '){
        puts("空白");
        return  ;
    }
    if(isspace(p[0])){
        puts("空白文字");
        return  ;
    }
    printf("文字列=%s\n",p);
}
int main(void){
    space(NULL);    //NULLポインタ
    space("");      //空文字列
    space(" ");     //空白文字1文字からなる文字列
    space("\n\t "); //空白文字からなる文字列
    space("abc123");//文字列
}

空文字’\0’は文字です。

空文字列””は要数1つの(先頭’\0’だけ)の
文字配列です。