SimpleText DAY 5 - テキストファイルを読み込んで表示してみる

では、テキストを読み込んで コンソール上に表示してみましょう。
/* え、またコンソールに出力ですか?
ええ、物事は一歩ずつ進めた方がいいんです。
直接textviewに出力だと、ファイル読み込みとtextviewの扱い、2つ一気にやることになりますからね。 */


今日手を加えるのは、callbacks.con_button_open_clickedです。

glibではGIOChannelというものが用意されていまいて、簡単にファイルを扱えます、とチュートリアルに書いてあります。(私も全貌を把握し切れていません...)
とりあえずやってみます。
callbacks.c



on_button_open_clicked ( GtkButton *button, gpointer user_data)
{
GtkEntry *entry = (GtkEntry *)lookup_widget((GtkWidget *)button, (gchar *)"entry");
gchar *filename = (gchar *)gtk_entry_get_text(entry);
g_print("%s\n", filename);

GError *error = NULL;
gchar *text;
gsize *size;

GIOChannel *filepointer = g_io_channel_new_file(filename, "r", error); //※1
g_io_channel_read_to_end(filepointer, &text, size, &error); //※2
g_io_channel_close(fp); //※3
g_print("%s\n", text); //※4
g_free(text); //※5
}

※1 でfilepointerを宣言すると同時に、filenameというファイルを読み取りモードで開き、
※2 でそのファイルを最後まで読み込んで、textに格納
※3 でファイルを閉じ、
※4 でテキストをコンソールに出力。
※5 リファレンスに解放しろと書いてあるので、解放しておきます。
errorをNULLで初期化してあることに注意。こうしないとうまくいきません。


参考にしたページ
GNOME Documentation Library IO Channels g_io_channel_read_to_end ()


ファイルが存在しなかったときの対処など全くしていませんが、
今日はこの辺で