2016-05-30 53 views
0

我是使用GTK的新手。這是我的代碼的一小部分。目的是複製整個當前行。內容存儲在「行」中。 「開始」和「結束」是行首和行尾的文本。在gtk中獲取斷言失敗錯誤。

gtk_text_iter_set_line_offset (start, 0); 
gtk_text_iter_forward_to_line_end (end); 
line = gtk_text_iter_get_text (start, end); 

gtk_clipboard_set_text (clipboard, line, -1); 

並執行後,我會得到以下錯誤消息。

Gtk[27786]: CRITICAL: gtk_text_iter_set_line_offset: assertion 'iter != NULL' failed 
Gtk[27786]: CRITICAL: gtk_text_iter_forward_to_line_end: assertion 'iter != NULL' failed 
Gtk[27786]: CRITICAL: gtk_text_iter_get_text: assertion 'start != NULL' failed 
Gtk[27786]: CRITICAL: gtk_clipboard_set_text: assertion 'text != NULL' failed 

代碼塊有什麼問題?我該如何解決它? 謝謝大家:)

+3

你給這些函數NULL指針而不是C字符串。請提供更多代碼以瞭解錯誤在哪裏。 – Boiethios

+0

考慮添加如何在這裏定義'start'和'end'。 – sjsam

回答

0

你可能有你的迭代器聲明像GtkTextIter *start。相反,根據GTK文檔中的text widget conceptual overview,「GtkTextIter是一個設計爲在堆棧上分配的結構體;它保證可以按值複製,並且不會包含任何堆分配的數據。」這意味着你不應該把它們聲明爲指針:

GtkTextIter start, end; 
// ... 
gtk_text_iter_set_line_offset (&start, 0); 
gtk_text_iter_forward_to_line_end (&end); 
line = gtk_text_iter_get_text (&start, &end); 
+0

哦,謝謝!有效 :) –