回答編集履歴
3
ちょっとしたコード改良。特にGStringのメモリ解放にg_ptr_array_foreachを使ってみた。
answer
CHANGED
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
{
|
|
21
21
|
for (gsize j = 0; j < N; j++)
|
|
22
22
|
{
|
|
23
|
-
g_print("%s
|
|
23
|
+
g_print("%s", ((GString *)g_ptr_array_index(tbl, i == j))->str);
|
|
24
24
|
}
|
|
25
|
+
g_print("\n");
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
g_ptr_array_foreach(tbl, (GFunc)g_string_free, GINT_TO_POINTER(TRUE));
|
|
27
|
-
g_string_free(two, TRUE);
|
|
28
28
|
g_ptr_array_free(tbl, TRUE);
|
|
29
29
|
return EXIT_SUCCESS;
|
|
30
30
|
}
|
2
空白要らんかった。
answer
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{
|
|
21
21
|
for (gsize j = 0; j < N; j++)
|
|
22
22
|
{
|
|
23
|
-
g_print("%s%s", ((GString *)g_ptr_array_index(tbl, i == j))->str, j == N - 1 ? "\n" : "
|
|
23
|
+
g_print("%s%s", ((GString *)g_ptr_array_index(tbl, i == j))->str, j == N - 1 ? "\n" : "");
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
g_string_free(one, TRUE);
|
1
文字/文字列の仕様の話を追加
answer
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
まぁ、全角文字列を使う、となると、素のCで頑張るよか[GLib](https://docs.gtk.org/glib/index.html)みたいなクロスプラットフォームの外部ライブラリとかに頼った方がいい、って話になるんで、面倒を避けてる、って話だよね。
|
|
2
|
-
そもそも仕様上、「どの文字コードを使います」とか書かれてないし、結果、「全角文字」と格闘するのはあまり嬉しくない、ってのがあるよね。
|
|
2
|
+
そもそも[C言語の仕様](https://kikakurui.com/x3/X3010-2003-01.html)上、「どの文字コードを使います」とか書かれてないし(と言うことは、実はASCII文字列の使用さえ仕様外の話だ)、結果、「全角文字」と格闘するのはあまり嬉しくない、ってのがあるよね。
|
|
3
3
|
|
|
4
4
|
```C
|
|
5
5
|
#include <glib-2.0/glib.h>
|