【C言語】
数字(1)を英語表記の月(January)に変換する方法

ポインタ配列の初期化

ポインタ配列の初期化

#include <stdio.h>
//C89仕様でポインタ配列の初期化
static char *月の名前[] = {
    "Illegal month",
    "January",  "February", "March",
    "April",    "May",      "June",
    "July",     "August",   "September",
    "October",  "November", "December"
};
int main(void){
    int     月;
    printf("月の数字を入れてね");
    (void)scanf("%d",&月);
    if(月 < 1 || 12 < 月){
        puts("入力ミス");
        return  -1;
    } 
    printf("%d月は %s\n",月,月の名前[月]);
}

0月を捨てると
月の名前[月-1]等の-1が不要になります。

参考:プログラミング言語Cの5.8章


■C99仕様の指示付きの初期化子を使うと

#include <stdio.h>
//C99仕様のポインタ配列の初期化
//:指示付きの初期化子
char    *月の名前[]={  
    [1]="睦月",
    [2]="如月",
    [3]="弥生",
    [4]="卯月",
    [5]="皐月",
    [6]="水無月",
    [7]="文月",
    [8]="葉月",
    [9]="長月",
    [10]="神無月",
    [11]="霜月",
    [12]="師走"
};
int main(void){
    int     月;
    printf("月の数字を入れてね");
    (void)scanf("%d",&月);
    if(月 < 1 || 12 < 月){
        puts("入力ミス");
        return  1;
    } 
    printf("%d月は %s\n",月,月の名前[月]);
}

「間違ってずれて初期化」する危険が減ります。