不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『C言語入門編6: 多次元配列を理解しよう (全9回)』を受講してみた

2021-02-06 21:46:17 | paiza

『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);
  • scanf
    scanf に変換指定子の「%s」や「%d」を使うと、標準入力から空白文字で区切られたデータを 1 つずつ読み込むことができる。
    • ※ scanf は便利な関数ですが、以下のような問題点が指摘されています。
      ・「%d」を使ったとき: 数値以外が入力されると、そのデータは読み込まれず、標準入力のストリーム上に残ってしまう。
      ・「%s」を使ったとき: 用意した配列よりも長い文字列が入力されると、配列の領域を超えてデータが書き込まれてしまう。

      このような問題点を回避するため、 fgets と sscanf の使用が推奨される場合があります。
※ そうだった!fgetsよりもscanfの方が馴染みある。でも、問題があるんだな。納得!!

認定証



学習ステータス

昇格はなかった



最新の画像もっと見る

コメントを投稿