回答編集履歴

2

表示のずれについて回答を追加

2021/01/23 08:10

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -91,3 +91,35 @@
91
91
  }
92
92
 
93
93
  ```
94
+
95
+ **追記**
96
+
97
+ 質問が最初と変わっていますね。
98
+
99
+ 新たな質問の場合、元の質問を残したうえで、追記しましょう。
100
+
101
+
102
+
103
+ printf("%-24s" の 24 はバイト数です。
104
+
105
+ 文字コードが Shift-JIS の場合は、漢字は 2バイトで表示幅も2桁ですが、
106
+
107
+ 文字コードが UTF-8 の場合は、漢字は 3バイトなのでずれます。
108
+
109
+ 次のようにすればよいでしょう。
110
+
111
+
112
+
113
+ ```diff
114
+
115
+ - sprintf(s[0], " %4d年%2d月", y, m);
116
+
117
+ + sprintf(s[0], " %4d年%2d月 ", y, m);
118
+
119
+
120
+
121
+ - printf("%-24s",calender[row*COL+col][i]);
122
+
123
+ + printf("%s ",calender[row*COL+col][i]);
124
+
125
+ ```

1

リファクタリング

2021/01/23 08:10

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -68,11 +68,11 @@
68
68
 
69
69
  {
70
70
 
71
- for (int m = 1, i = 0; i < ROW; i++, m += COL) {
71
+ for (int m = 1; m < 12; m += COL) {
72
72
 
73
73
  int a[COL][6][7] = { 0 };
74
74
 
75
- for (int j = 0; j < COL; j++) set(a[j], y, m + j);
75
+ for (int i = 0; i < COL; i++) set(a[i], y, m + i);
76
76
 
77
77
  print(a, y, m);
78
78