[英]C++ GTKMM, getting a weird output in a text-buffer
我是 Gtkmm 的新手,并试图将 txt 文件加载到文本缓冲区中。 当我开始我的程序时,我得到一个 output 像这样: Output
我填充文本缓冲区的代码如下所示:
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 以及为什么我会得到它?
这里的主要问题是分配output = line
后跟free(line)
。
因为output
指向相同的 memory 作为line
,这意味着output
变得无效。
在完成字符串之前不要释放 memory,或者line
中复制字符串(分配没有这样做)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.