回答編集履歴
2
表示のずれについて回答を追加
answer
CHANGED
@@ -44,4 +44,20 @@
|
|
44
44
|
{
|
45
45
|
for (int y; printf("year> "), scanf("%d", &y) == 1; cal(y)) ;
|
46
46
|
}
|
47
|
+
```
|
48
|
+
**追記**
|
49
|
+
質問が最初と変わっていますね。
|
50
|
+
新たな質問の場合、元の質問を残したうえで、追記しましょう。
|
51
|
+
|
52
|
+
printf("%-24s" の 24 はバイト数です。
|
53
|
+
文字コードが Shift-JIS の場合は、漢字は 2バイトで表示幅も2桁ですが、
|
54
|
+
文字コードが UTF-8 の場合は、漢字は 3バイトなのでずれます。
|
55
|
+
次のようにすればよいでしょう。
|
56
|
+
|
57
|
+
```diff
|
58
|
+
- sprintf(s[0], " %4d年%2d月", y, m);
|
59
|
+
+ sprintf(s[0], " %4d年%2d月 ", y, m);
|
60
|
+
|
61
|
+
- printf("%-24s",calender[row*COL+col][i]);
|
62
|
+
+ printf("%s ",calender[row*COL+col][i]);
|
47
63
|
```
|
1
リファクタリング
answer
CHANGED
@@ -33,9 +33,9 @@
|
|
33
33
|
|
34
34
|
void cal(int y)
|
35
35
|
{
|
36
|
-
for (int m = 1
|
36
|
+
for (int m = 1; m < 12; m += COL) {
|
37
37
|
int a[COL][6][7] = { 0 };
|
38
|
-
for (int
|
38
|
+
for (int i = 0; i < COL; i++) set(a[i], y, m + i);
|
39
39
|
print(a, y, m);
|
40
40
|
}
|
41
41
|
}
|