wareki 西暦年からその年の和暦を算出する
int wareki(char *nengou, int year);
nengou (出力)和暦の年号を示す ASCIZ文字列 year (入力)西暦年
和暦年。変換できなかったときは -1
int wareki(char *nengou, int year) { int i; typedef struct { int y; /* 西暦年 */ char *w; /* 和暦年号 */ } TBL; static TBL tbl[] = { {708,"和銅"},{715,"霊亀"},{717,"養老"},{724,"神亀"}, {729,"天平"},{749,"天平勝宝"},{757,"天平宝字"},{765,"天平神護"}, {767,"神護景雲"},{770,"宝亀"},{781,"天応"},{782,"延暦"}, {807,"大同"},{810,"弘仁"},{824,"天長"},{834,"承和"}, {848,"嘉祥"},{851,"仁寿"},{854,"斉衡"},{857,"天安"}, {859,"貞観"},{877,"元慶"},{885,"仁和"},{889,"寛平"}, {898,"昌泰"},{901,"延喜"},{923,"延長"},{931,"承平"}, {938,"天慶"},{947,"天暦"},{957,"天徳"},{961,"応和"}, {964,"康保"},{968,"安和"},{970,"天禄"},{973,"天延"}, {976,"貞元"},{978,"天元"},{983,"永観"},{985,"寛和"}, {987,"永延"},{989,"永祚"},{990,"正暦"},{995,"長徳"}, {999,"長保"},{1004,"寛弘"},{1012,"長和"},{1017,"寛仁"}, {1021,"治安"},{1024,"万寿"},{1028,"長元"},{1037,"長暦"}, {1040,"長久"},{1044,"寛徳"},{1046,"永承"},{1053,"天喜"}, {1058,"康平"},{1065,"治暦"},{1069,"延久"},{1074,"承保"}, {1077,"承暦"},{1081,"永保"},{1084,"応徳"},{1087,"寛治"}, {1094,"嘉保"},{1096,"永長"},{1097,"承徳"},{1099,"康和"}, {1104,"長治"},{1106,"嘉承"},{1108,"天仁"},{1110,"天永"}, {1113,"永久"},{1118,"元永"},{1120,"保安"},{1124,"天治"}, {1126,"大治"},{1131,"天承"},{1132,"長承"},{1135,"保延"}, {1141,"永治"},{1142,"康治"},{1144,"天養"},{1145,"久安"}, {1151,"仁平"},{1154,"久寿"},{1156,"保元"},{1159,"平治"}, {1160,"永暦"},{1161,"応保"},{1163,"長寛"},{1165,"永万"}, {1166,"仁安"},{1169,"嘉応"},{1171,"承安"},{1175,"安元"}, {1177,"治承"},{1181,"養和"},{1182,"寿永"},{1184,"元暦"}, {1185,"文治"},{1190,"建久"},{1199,"正治"},{1201,"建仁"}, {1204,"元久"},{1206,"建永"},{1207,"承元"},{1211,"建暦"}, {1213,"建保"},{1219,"承久"},{1222,"貞応"},{1224,"元仁"}, {1225,"嘉禄"},{1227,"安貞"},{1229,"寛喜"},{1232,"貞永"}, {1233,"天福"},{1234,"文暦"},{1235,"嘉禎"},{1238,"暦仁"}, {1239,"延応"},{1240,"仁治"},{1243,"寛元"},{1247,"宝治"}, {1249,"建長"},{1256,"康元"},{1257,"正嘉"},{1259,"正元"}, {1260,"文応"},{1261,"弘長"},{1264,"文永"},{1275,"建治"}, {1278,"弘安"},{1288,"正応"},{1293,"永仁"},{1299,"正安"}, {1302,"乾元"},{1303,"嘉元"},{1306,"徳治"},{1308,"延慶"}, {1311,"応長"},{1312,"正和"},{1317,"文保"},{1319,"元応"}, {1321,"元亨"},{1324,"正中"},{1326,"嘉暦"},{1329,"元徳"}, {1331,"元弘"},{1334,"建武"},{1336,"延元"},{1340,"興国"}, {1346,"正平"},{1370,"建徳"},{1372,"文中"},{1375,"天授"}, {1381,"弘和"},{1384,"元中"},{1394,"応永"},{1428,"正長"}, {1429,"永享"},{1441,"嘉吉"},{1444,"文安"},{1449,"宝徳"}, {1452,"享徳"},{1455,"康正"},{1457,"長禄"},{1460,"寛正"}, {1466,"文正"},{1467,"応仁"},{1469,"文明"},{1487,"長享"}, {1489,"延徳"},{1492,"明応"},{1501,"文亀"},{1504,"永正"}, {1521,"大永"},{1528,"享禄"},{1532,"天文"},{1555,"弘治"}, {1558,"永禄"},{1570,"元亀"},{1573,"天正"},{1592,"文禄"}, {1596,"慶長"},{1615,"元和"},{1624,"寛永"},{1644,"正保"}, {1648,"慶安"},{1652,"承応"},{1655,"明暦"},{1658,"万治"}, {1661,"寛文"},{1673,"延宝"},{1681,"天和"},{1684,"貞享"}, {1688,"元禄"},{1704,"宝永"},{1711,"正徳"},{1716,"享保"}, {1736,"元文"},{1741,"寛保"},{1744,"延享"},{1748,"寛延"}, {1751,"宝暦"},{1764,"明和"},{1772,"安永"},{1781,"天明"}, {1789,"寛政"},{1801,"享和"},{1804,"文化"},{1818,"文政"}, {1830,"天保"},{1844,"弘化"},{1848,"嘉永"},{1854,"安政"}, {1860,"万延"},{1861,"文久"},{1864,"元治"},{1865,"慶応"}, {1868,"明治"},{1912,"大正"},{1926,"昭和"},{1989,"平成"}, {9999,""}}; if (year < tbl[0].y || year >= 9999) return -1; for (i = 0; ; i++) if (tbl[i].y <= year && year < tbl[i+1].y) break; strcpy(nengou, tbl[i].w); return year - tbl[i].y + 1; }