表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
7/7

あれあれ〜? Arrayだぞ〜

 今回はちょっとだけ込み入ったプログラムを作ります。

以下ソース

--------

#include <stdio.h>

int main(int argc,char *argv[]){

char Array[128]; //入力文字列

int i = 0; //ループインデックス

char Upper[128]; //大文字

char ch; //一時記憶

fgets(Array,127,stdin);

//入力された小文字を大文字にする、小文字以外は想定しない

while(1){

//入力の終端

if(Array[i] == '\n'){

Upper[i] = '\n';

break;

}

ch = Array[i] - 'a';

Upper[i] = ch + 'A';

i++;

}

printf("%s",Upper);

return 0;

}

--------

簡単に説明するとアルファベットの小文字を入力すると大文字に変換して返すプログラムです。

 ループ部分で小文字→大文字変換をやっているのですが、今回はそこではなく配列に注目しようと思います。

 char Array[128];

 と書いていますこのArrayとはなんなのか?

 これはchar型の変数を128個確保しています。

 別に32個でも64個でもいいんですが、多めの方がその効果がわかりやすのでそうしています。

 char型の変数を一つずつ定義していったら大変なのは想像がつくと思います

char a1,a2....

 こういう面倒を避けるため配列はあります。

 また、配列は文字列を入れるのに向いています。

fgets(Array,127,stdin);

 ここでは配列Arrayに127文字読み込んでいます。

 一文字少ないのはCでは文字列の終端を表すのに「\0」を入れなければならないからです。

 stdinとは何か?

 めっちゃざっくり書くとキーボードからの入力です、厳密にはパイプやリダイレクトといった概念もあるのですがややこしいのでstdinと書けばキーボードからの入力待ちになると思っておいてください。


 次のwhile(1)は無限ループです、この辺は難しいのでまた今度やります。

 話を戻して文字列に。

 まずCには文字列型は存在「しません」

 お前さっき文字列って言ってじゃん、ええまあそうなんですけど……

 Cにおける文字列は「文字型の配列」がそれに当たります。


 まず配列というのは連続した領域に保存されるのが保証されます。

 つまり「ABC」という文字列があったときary[4]に保存されている場合、ary[0]がAのばあいA[1]はAの保存場所のひとつ先を指していてBが入っているということです。


 そしてA[3]には「\0」という終端文字が入っています。

 ここで\0は終端文字で一文字なのに注意してください「\」と「0」ではなく「\0」で一文字です、これをNULL文字と呼びます。

 このNULL文字が文字列の終端を示しています。

 つまりwhile(1)では文字列を先頭から終端まで走査して変換しています「\0」でなく「\n」という改行文字で判別しているのはキーボード入力を確定するときに押すエンターで改行文字が入るからです。

 改行文字は終端文字とは違うことに注意してください。

ch = Array[i] - 'a';

Upper[i] = ch + 'A';

 ここで変換しているのですが、今はこうやれば変換できるくらいに思っておいてください。

 興味がある方はソースをコピペして動かしてみてくださいね! じゃあまた!


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ