『C言語入門編6: 多次元配列を理解しよう (全9回)』
メモ
#05:ドット絵を表示させよう
- 条件演算子 (三項演算子)
(条件式) ? (式1) : (式2)- 条件式が成立するとき、式1 の値が返される
- そうでないときは、式2 の値が返される
#08:2次元配列で地図をつくろう - その2
- 論理演算子 (OR, AND)
OR 演算子は「||」、AND 演算子は「&&」- OR 演算子は 2 つの条件のどちらかが成り立つとき「真」
- AND 演算子は 2 つの条件の両方が成り立つとき「真」
#09:標準入力から2次元配列のデータを読み込もう
- 2 次元配列のように使える領域 (n × m の領域) は次のように確保できるint **enemy_image;
enemy_image = malloc(sizeof(int *) * n);
for (int i = 0; i < n; i++) {
enemy_image[i] = malloc(sizeof(int) * m);
} - free で領域を開放するfor (int i = 0; i < n; i++) {
free(enemy_image[i]);
}
free(enemy_image); - scanfscanf に変換指定子の「%s」や「%d」を使うと、標準入力から空白文字で区切られたデータを 1 つずつ読み込むことができる。
- ※ scanf は便利な関数ですが、以下のような問題点が指摘されています。
・「%d」を使ったとき: 数値以外が入力されると、そのデータは読み込まれず、標準入力のストリーム上に残ってしまう。
・「%s」を使ったとき: 用意した配列よりも長い文字列が入力されると、配列の領域を超えてデータが書き込まれてしまう。
このような問題点を回避するため、 fgets と sscanf の使用が推奨される場合があります。
- ※ scanf は便利な関数ですが、以下のような問題点が指摘されています。
※ そうだった!fgetsよりもscanfの方が馴染みある。でも、問題があるんだな。納得!!
認定証
学習ステータス
昇格はなかった
※コメント投稿者のブログIDはブログ作成者のみに通知されます