/*=======================================================================*
 * 数字・数字列 から 数値 への変換                    2023.8.10 山田俊行 *
 *=======================================================================*/

#include <stdio.h>
#include <stdlib.h>   /* atoi() */

int main(void) {
  char digits[] = { '0', '1', '2', '?', '\0' };   /* 文字配列,文字列 */
  char *p;

  /* char 型データの値は文字コードを表す小さな整数 */

  puts("===== *p =====");

  for (p = digits; *p != '\0'; p++)
    printf("%d\n", *p);                           /* %d は値の10進表示 */

  /* 文字列は '\0' で終わる char 型データの並び */

  puts("========== p ==========");

  for (p = digits; *p != '\0'; p++)
    printf("%s\n", p);                            /* %s は文字列の表示 */

  /* 数字から数値への変換(数字のコードの連続性を利用) */

  puts("========== *p - '0' ==========");

  for (p = digits; *p != '\0'; p++)
    printf("'%c' -> %d\n", *p, *p - '0');         /* %c は文字の表示 */

  /* 数字列から数値への変換(atoi() を利用) */

  puts("========== atoi(p) ==========");

  for (p = digits; *p != '\0'; p++)
    printf("\"%s\" -> %d\n", p, atoi(p));

  return 0;
}