g_fopen = int

#include <stdio.h>
#include <glib.h>
 
int
main (int argc, char *argv[]) {

    FILE*  f;

    /* OK */
    f = fopen("suzuki.txt", "w"); //return pointer
    fprintf(f, "SUZUKI %s", "Hayabusa");
    fclose(f);

    /* Error (x86_64) */
    f = g_fopen("kawasaki.txt", "w"); // return int
    g_fprintf(f, "KAWASAKI %s", "Ninja");
    g_close(f, NULL);

    /* No Error (x86_64)
    gint n = g_fopen("kawasaki.txt", "w"); // return int
    g_close(n, NULL); */

    return 0;
}

g_fopen

おいおい、どういうことだよ。
devhelp をよく見ると「コレは Windows の表記だ」とあるが。
fopen にマッピングではなく stat に合わせているのか?

glibc は glib のサブセットだと思いこんでいたけど違うんだな。
つまり Linux では FILE* は使わないほうがいいということみたい。
x86(32bit) だと気が付かないで混乱するかも。

glib – C言語で、UTF-8 の文字列から Unicode のコードポイントを取得するやりかた – Qiita

g_utf8_to_ucs4_fast って fast だから速いのかな?
GLib ってまだまだ知らないことが沢山あるな。

ただコードポイントを取得なら Python3 のほうが簡単そう。
単文字を ord() すれば UCS-4 のまま値が取れそうだけど、試すか。

文字コード考え方から理解するUnicodeとUTF-8の違い | ギークを目指して
「ほげふが」が [U+307B] [U+3052] [U+3075] [U+304C]
になれば OK ということね。

#!/usr/bin/env python3

s = "ほげふが"
for a in s:
    print("[U+{0:04X}] ".format(ord(a)), end=" ")

python_ord

思ったとおり。
ワイド文字が UTF-16 になる Windows 版じゃ変換が必要だけど。
ごめん Windows Python3 でも IronPython でもできるわ

win_code_point

ipy_code_point

Linux は GLib が簡単に使えて Python も実用的。
やはりプログラミングするなら Linux ですよ。