C 基本講座

文字と文字列を扱う

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、C言語で文字と文字列を扱う方法について説明します。
講師:
07:46

字幕

このレッスンでは C 言語で文字と文字列を扱う方法について説明します。C 言語では文字は文字コードで扱います。例えば大文字の A は 10 進数の65 を割り当てます。世界中に多くの文字コードが存在しますがその中で一番利用されているのがASCII コードです。ASCII コードは7ビット、0から 127 のコードでアルファベット、数字、記号、制御コードを表します。文字定数はシングルクォテーションで囲んだ A のようにシングルクォテーションで囲んで表します。sizeof 演算子を使って調べればわかりますが実は文字定数は int 型で、一般的に4バイトサイズです。文字を扱う変数はchar 型で宣言します。この char 型は1バイトサイズです。漢字のような2バイト文字のコードにはJIS や EUC や Unicode などいくつかの異なるコードが存在します。1994 年以降、C 言語の使用にはマルチバイト文字を扱うためのwchar_t 型が追加されています。しかし、内部で使われる文字コードが環境依存であるため実用上は不十分です。ですから2バイト文字を扱う場合にはそれぞれの環境で用意された特定の文字コード用関数を用いるか各バイトを直接処理するプログラムを作成することになります。 このコースでは文字は1バイト文字のみを扱うことにします。では文字の特色についてコードで確認してみましょう。まず実行してみます。このように結果が表示されました。文字は 11 行目のようにchar 型の変数で扱います。14 行目で文字コードをABC のコードを確認しています。printf の %d 書式指定を使うと 10 進数で文字 ABC を表示することができます。65・66・67 と結果を表示していますね。これはこれらの文字のASCII コードです。文字定数 A の大きさをsizeof 演算子で確認すると4バイトになっています。これは int 型のバイト幅です。一方、文字型変数の方は1バイトになっています。char 型は1バイトです。次は文字列について説明しましょう。文字列、つまり文字列リテラルはダブルクォーテーションで囲んだ ABC のようにダブルクォーテーションで囲まれた0文字以上の文字の列です。文字列リテラルには NULL 文字という文字コードが末尾に付きます。この NULL 文字は値としては0で¥ マークを付けて¥0 のようにエスケープシーケンスで記述します。文字列型が存在するプログラム言語もありますがC 言語では文字列はchar str[ ]="ABC" のように文字型の配列で扱います。 では文字列の特色についてコードで確認してみましょう。実行してみましょう。文字列は 11 行目のようにchar 型の配列に初期化して扱います。文字列は終了コードとして値0の NULL 文字が要素の末尾につきます。そのため、ABC は3文字ですが文字列リテラル ABC とそして ABC で初期化した配列 s の大きさを sizeof 演算子で調べるとそれぞれ4バイトになります。さらに配列 s の要素を順に10 進数で表示してみるとご覧のようになります。この 65・66・67 はそれぞれ ABC の ASCII コードです。最後の0は NULL 文字になります。次に複数の文字列を二次元配列で扱う方法をプログラムを使って説明しましょう。単一の文字列は一次元配列で扱いますが複数の文字列はこのように二次元配列で扱うことができます。このプログラムはペットの種類を答えるものです。まず実行してみましょう。このように1を入力すると「私は猫を飼っています。」と表示しますね。この scanf("%d", &no) と記述すると変数 no に 10 進数をキー入力することができます。尚、Windows 版の Eclipse ではscanf の前に printf があるとコンソールビューからの入力がうまく実行できません。 そのため、この setvbuf 関数でバッファを使わないようにしています。このプログラムではペットの種類の文字列を二次元配列に初期化しています。多次元配列の初期化では先頭の要素数は省略が可能ですがそれ以降の要素数は省略ができません。ですからこのように別の要素数のみ記述しています。このペットの種類の文字列で一番長いものはウサギですが全角は1文字が2バイトなのでウサギは6バイトです。そして文字列の終了コードのNULL 文字も格納する必要があるのでこの列の要素数は最低でも7になります。もし、この列の要素数を6にしてしまうとコンパイル時にこのように警告がでます。実行するとウサ鳥と次の要素も含めて表示してしまいます。元に戻しておきましょう。また、それぞれの文字列を参照するにはこのように0から始まる添字を指定します。この no に1を入力した場合には0番目の猫を表示するためにno-1 を添字に記述しています。尚、no に1から5以外の数値を入力した場合、配列要素を越えて参照してしまいますので注意してください。通常は if という制御文を使って1から5以外の数字を入力した場合には配列をアクセスしないようにします。 このレッスンでは C 言語で文字と文字列を扱う方法について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。