はじめての C

構造体へのポインタを使って 鉛筆の色と太さを表示するプログラムを作成せよ。

  1. /* pencil */
  2. #include
  3. struct Pen {
  4. char color;
  5. int diam;
  6. };
  7. void init(struct Pen *);
  8. main()
  9. {
  10. struct Pen pen, *ppen = &pen;
  11. init(&pen) /* &pen は省略できない */
  12. printf("color : %c\n", ppen->color);
  13. printf("diameter : %d\n", ppen->diam);
  14. }
  15. void init(struct Pen *ppen) {
  16. ppen->color = 'b';
  17. ppen->diam = 5;
  18. }

上のコードで 構造体の中にポインタが含まれている場合のプログラムを作成せよ。

  1. /* pencil.2 */
  2. #include
  3. struct Pen {
  4. char *color; /* メンバーがポインタ */
  5. int diam;
  6. }
  7. void init(struct Pen *);
  8. main()
  9. {
  10. struct Pen pen, *ppen = &pen;
  11. init(&pen);
  12. printf("color : %s\n", ppen->color);
  13. printf("diameter : %d\n", ppen->diam);
  14. }
  15. void init(struct Pen *ppen) {
  16. ppen->color = "black";
  17. ppen->diam = 5;
  18. }

さらに キーボードから入力できるようにプログラムを改造せよ。

  1. /* pencil.3 */
  2. #include
  3. struct Pen {
  4. char color[20]; /* 配列を使う */
  5. int diam;
  6. };
  7. void init(struct Pen *);
  8. main()
  9. {
  10. struct Pen pen, *ppen = &pen;
  11. init(&pen);
  12. printf("\n");
  13. printf("color : %s\n", ppen->color);
  14. printf("diameter : %d\n", ppen->diam);
  15. }
  16. void init(struct Pen *ppen) {
  17. printf("Input color of pencil : ");
  18. scanf("%s", ppen->color);
  19. printf("Input diam. of pencil : ");
  20. scanf("%d", &(ppen->diam));
  21. }

text: 金山典世さん(稚内北星)のページ