5/22(金)〜25(月) の学習ログです(主にC言語)
こんばんは、というか深夜ですね。
いつもありがとうございます、安藤です。
24日から生活のスタイルを太陽に合わせようと舵を切りました。
まだ実験段階ですが、まだ馴染まず…(そりゃそうだ)
地道に進めていこうと思っています。
長年の習慣を変えるのは大変だと思いますが、どんな結果になるかを楽しみに挑戦していこうと思います。
朝の散歩は気持ちいいです。睡眠の質も良くなってる気がします。
身体の声を傾聴していきます。
さて、今回もここに学習のログを残します。
2020.5.22(金)
◎C言語(web記事「苦しんで覚えるC言語」)
●文字列を扱う方法
・配列にしてしまう
文字変数の配列を作れば文字列になる。C言語では、文字列の最後に特別な値を記録しておくことで文字数を判定する。
このような文字を「EOS」と呼ぶ。
「‘\0’」がEOSとして扱われる。数値そしては、0にあたる。
EOSは、文字列の終わりを表す記号で、終端文字とも呼ばれる。
End of Stringの頭文字。printf関数では、%s指定子を使って文字列の表示ができる。
EOSを書いた場合は要素数を省略することができる。・文字列の初期化
「” “」で囲んだ文字列を「文字列リテラル」と呼ぶことがある。
文字列リテラルを使うと簡単に文字列の初期化ができる。
# include <stdio.h>
int main(void)
{
char str[ ]=“MARIO”;
printf(“%s\“, str);
return 0;
}
実行結果 「 MARIO 」
この方法では、文字列を普通に書くだけでよく、要素数を省略することもできる。
この場合は、要素数は文字列の長さより1つ多く確保されるが、
多めに領域を確保したい場合には、指定することができる。
この方法の問題点は、初期化の時にしか使えないこと。
後から文字列を代入したい場合には、1つ1つ要素に代入するしかない。
int main(void) {
char str[6];
str[0]=‘M’;
str[1]=‘A’;
str[2]=‘R’;
str[3]=‘I’;
str[4]=‘O’;
str[5]=‘\0’;
printf(“%s\n”,str);
return 0;
}
実行結果 「 MARIO 」
2020.5.23(土)
今日は全然学習出来なかったです。
夕方に散歩をしたら、なんか身体が喜んでいる感じがしたので続けてみようと思います。
太陽と運動が圧倒的に不足してる。。。
一周回って自己管理ができていない状態に陥っているので、生活を整えることに意識を向けていきたいと思います。
●文字列処理関数
文字列のコピー
strcpy関数を使うと、文字列のコピーを行うことができる。
strcpy関数を使うには、string.hを#includeする必要がある。strcpy(コピー先文字列配列名,コピー元文字列配列名);この関数は、文字列配列同士のコピーに使うのが元々の役割だったが、
実際には、文字列の代入に使われることが多い。先頭から指定された文字数だけをコピーするstrncpy関数もある。strncpy(コピー先文字列配列名,コピー元文字列配列名,コピーする文字数);
コピー先文字列配列名[コピーする文字数]=‘\0’;この関数は、文字数の分だけコピーするので、コピーされた文字列の最後にEOSが入っていないことがある。
そのまま表示させる延々と表示され続けてしまうので、必ずEOSをつけること。・文字列の連結
strcat関数
使用するには、string.hを#includeする必要がある。
strcat(元の文字列が記憶された配列,追加する文字列の記憶された配列);・究極の文字列合成関数
この関数はあらゆる文字列合成に使用できる万能関数。
sprintf関数は、printf関数と同じ機能を持った関数だが、
sprintf関数の場合、結果を配列の中に記憶する。
sprintf関数を使うには、stdio.hを#includeする必要がある。sprintf(結果を記憶する配列,書式文字列,各種変数…);
今回は以上です。
太陽はとっくに沈んでいるので私も眠りにつこうと思います。
次回は金曜日に更新予定です。
では、また!