■この記事の概要
この記事では、C言語における
空文字’\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’だけ)の
文字配列です。