C++ C++;GTKMM,在文本缓冲区中获得奇怪的输出
我是Gtkmm新手,正在尝试将txt文件加载到文本缓冲区中。当我启动程序时,我得到如下输出: 填充文本缓冲区的代码如下所示:C++ C++;GTKMM,在文本缓冲区中获得奇怪的输出,c++,gtk,gtkmm,C++,Gtk,Gtkmm,我是Gtkmm新手,正在尝试将txt文件加载到文本缓冲区中。当我启动程序时,我得到如下输出: 填充文本缓冲区的代码如下所示: void ExampleGui::fill_buffers() { FILE *fp = fopen("/home/User/Documents/Gui/test1.txt", "r"); if (fp == NULL) exit(EXIT_FAILURE); char *line = NU
void ExampleGui::fill_buffers()
{
FILE *fp = fopen("/home/User/Documents/Gui/test1.txt", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
char *line = NULL;
size_t len = 0;
char *output = NULL;
while ((getline(&line, &len, fp)) != -1) {
output = line;
}
fclose(fp);
if (line)
free(line);
m_refTextBuffer1 = Gtk::TextBuffer::create();
m_refTextBuffer1->set_text("Welcome!\nClick the button Show Text to start.");
m_refTextBuffer2 = Gtk::TextBuffer::create();
m_refTextBuffer2->set_text(Glib::convert_with_fallback(output, "UTF-8", "ISO-8859-1"));
}
我如何修复错误的输出以及为什么得到它?这里的主要问题是分配
output=line
,然后是free(line)
因为输出
指向与行
相同的内存,这意味着输出
无效
在处理完字符串之前不要释放内存,或者在行
中复制字符串(分配不执行此操作)