ナル文字

 前回は、文字列の扱い方について解説しました。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    char str[30];
    
    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';
    str[3] = 'd';
    str[4] = 'e';
    
    printf("str = %s", str);
    
    return 0;
}

 上のようなプログラムを紹介し、文字列は配列として扱うことをお伝えしました。しかし、このプログラムは実行する環境によっては、文字化けが発生するかエラーが出る可能性があります。その理由は、文字列の終わりの指定が無いからです。「文字列は配列で扱うのであれば、最後の文字の次の要素に何も入っていなければ、そこで文字の終わりとすれば良いじゃないか」と思われるかもしれませんが、C言語では、文字列の終わりを明確に示さなくてはなりません。その文字列の終わりは「\0」もしくは「\0」で表します。改行のための「\n」と位置づけは同じです。この終わりの文字のことをナル文字(ヌル文字)と呼びます。

 文字列のための配列を用意する際は、充分な要素数を確保する旨を前回お伝えしました。その理由のひとつが、ナル文字が入るからです。5文字の文字列なら「str[5]」のようにしたいかもしれませんが、実際にはナル文字が入り、C言語の内部処理上では6文字で扱わなければなりません。ギリギリ5文字分だけしか確保しなければエラーになります。そのために、充分な要素を確保する必要があるのです。

 上のプログラムでナル文字を入れるようにし、正常にプログラムが動作するようにしましょう。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    char str[30];
    
    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';
    str[3] = 'd';
    str[4] = 'e';
    str[5] = '\0';
    
    printf("str = %s", str);
    
    return 0;
}

 これで、どの環境でも正常に動作し、「str = abcde」と表示するかと思います。このナル文字の概念は、ぜひ覚えておいて下さい。

■スポンサーリンク

このページの先頭へ