検索
連載

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

C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回も引き続き、「配列とポインタの深い関係」を探ります。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

文字列とは

 文字列とは単語や文章など文字が並んだものをいいます。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.

ページトップに戻る