ぷろぐらみんぐ!

プログラマーを目指して勉強する大学生のブログ

文字変数?文字列配列? C#10

こんにちは!

 

前回からかなり間が空いてしまいました。

あんまり時間が経つと勉強したことを忘れてしまうので、できるだけ短期間で終わらせたいと思います。

 

 

さて、今回は文字の扱い方からやっていきます!

 

文字変数と文字列配列

  • C言語には文字列変数は無いが、文字変数(1文字だけ)ならある。
  • 文字変数は下のようにして宣言する。

f:id:fujigg7:20170312043135p:plain

  • 文字変数の出力変換指定子は%c。
  • char型では文字を数字に置き換えて記憶している。
  • なので、文字や数字を数値に置き換えて計算することもできる。
  • 文字や数字を数値として知りたい場合は、文字や数字から '0' を引く。
  • C言語で文字列を扱いたい場合は文字変数の配列を作る。
  • 文字列の文字数を数えるために、文字列の最後にEOSと呼ばれる文字を付ける。
  • C言語でのEOSは\0で、\0は数値としては0。
  • " " で囲まれた文字列を文字列リテラルという。
  • printf関数で文字列を表示させるには%s指定子を使う。
  • 数字を数値に変換したい場合はatoi関数を使う。
  • atoi関数を使うにはstdlib.hを#includeしなければならない。
  • atoi関数は下のようにして使う。

f:id:fujigg7:20170318062943p:plain

  • 数字ではない文字列をatoi関数で変換した場合は0に変換される。
  • 文字列をコピーしたい場合はstrcpy関数を使う。
  • strcpy関数を使うにはstring.hを#includeしなければならない。
  • strcpy関数は下のようにして使う。

 f:id:fujigg7:20170318063252p:plain

  • 配列に格納されている文字列を結合するにはstrcat関数を使う。
  • strcat関数を使うにはstring.hを#includeしなければならない。
  • strcat関数は下のようにして使う。

f:id:fujigg7:20170318064550p:plain

  • あらゆる種類の文字列を合成できるsprintf関数を覚えておくと便利。
  • sprintf関数を使う時はstdio.hを#includeしなければならない。
  • sprintf関数は下のようにして使う。

f:id:fujigg7:20170318065429p:plain

  • scanf関数で文字列を入力するプログラムを書く時、配列名の前に&は付けない。

f:id:fujigg7:20170318065906p:plain

  • 文字列の数を数える場合はstrlen関数を使う。
  • strlen関数を使う時はstring.hを#includeしなければならない。
  • strlen関数は下のようにして使う。

f:id:fujigg7:20170318070338p:plain

  • 文字配列同士を比較する場合は、 == 演算子は使うことが出来ない。
  • 2つの文字配列が同じかどうか比較する時にはstrcmp関数を使う。
  • strcmp関数は2つの文字列が同じだった場合は0を返す。
  • strcmp関数を使うにはstring.hを#includeしなければならない。
  • strcmp関数端のようにして使う。

f:id:fujigg7:20170318071156p:plain

 

長文になってしまいました。

これでも少し飛ばしてるんですけどね笑

 

最後のstrcmp関数のところで、比較した文字列が違っていた場合は何を返すのかな?と思ったので、プログラムを書いてみました。

 

f:id:fujigg7:20170318072713p:plain

 

文字は適当です。

違う文字を比較した結果、何故か7が返ってきました。

文字を変えても7だったので決まっているのかな?

 

ここまで来たら練習問題です。

 

f:id:fujigg7:20170318074006p:plain

 

解答例ではstrcat関数を使っていました。

でもまぁsprintf関数の方が楽でいいですね。

stdio.hで使えるのも便利です。

 

それにしても、「stdio.hを#includeする」というところ、なんかかっこいいですね笑

いまいち日本語でなんと言えばいいのかわからなかったので、今回はそのまま書きました。

 

苦Cもそろそろ終わりが見えてきました。

これが終わったら、次はどうしようかな。

 

それでは。