【問題10】ポインタで文字列を操作しよう完全マスター! 組み込みC言語プログラミング(11)(2/3 ページ)

» 2014年09月19日 11時00分 公開
[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]

文字列とは

 文字列とは単語や文章など文字が並んだものをいいます。C言語の文字列は文字の配列ですが、文字の並びの終わりにヌル文字(null character)が付加されます。

 C言語で文字とは1バイトで納まるビット表現(つまり1バイトの文字コード)と定義されているので、文字列はcharの配列となるわけです。

 例えば

char moji[] = "monoist";

 と宣言すると、下図のように文字列"monoist"を初期値とする文字列がメモリのどこかに確保されます。ここでmoji[7]の¥0はヌル文字を表し、その値は0です。

photo

文字列の英小文字を英大文字変換する

 それでは、strupper.cについて解説しましょう。以下にstrupper.cのフローチャートを示すので参考にしてください。

photo

 strupper.cでは、添字iによりstrを先頭から順に一文字ずつ、ヌル文字に行き着くまで調べます。

 10行目のfor文

for (i = 0; str[i] != '¥0'; i++) {

 がそれに当たります。ヌル文字はC言語で¥0で表されます。

 11行目のif文の条件式

str[i] >= 'a' && str[i] <= 'z'

 では、str[i]が英小文字であることを判定しています。

 1つ1つの文字には、コンピュータが扱うための固有の番号、すなわち文字コードが割り当てられています。ASCIIコードでは文字aは97、文字zは122で、英小文字(a〜z)の文字コードはその間にあるからです。

 また、英小文字から英大文字に変換してるのが、12行目で

str[i] = str[i] - 'a' + 'A';

 は、まずstr[i]から文字aを引くことで、str[i]が文字aから何番目の文字か求め、それに文字Aを加えて、英大文字(A〜Z)に変換しています。

Copyright © ITmedia, Inc. All Rights Reserved.