将字符数组转换为const gchar *

时间:2010-05-10 04:28:28

标签: c gtk

我有一个包含字符串的字符数组:

char buf[MAXBUFLEN];
buf[0] = 'f';
buf[1] = 'o';
buf[2] = 'o';
buf[3] = '\0';

我希望将此字符串作为参数传递给gtk_text_buffer_insert函数,以便将其插入GtkTextBuffer。我无法弄清楚的是如何将其转换为const gchar *,这是gtk_text_buffer_insert期望的第三个参数。

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:7)

gchar只是typedef的{​​{1}},从数组到const指针的转换是隐式的,所以你可以传递它:

char

请注意,您也可以使用字符串文字直接初始化数组:

someFunctionExpectingConstGcharPointer(buf);

答案 1 :(得分:1)

好吧,让我们看看。 GTK+ reference manual说:

  

gtk_text_buffer_insert()

     

void gtk_text_buffer_insert(GtkTextBuffer * buffer,                                                            GtkTextIter * iter,                                                             const gchar * text ,                                                            gint len);

     

在iter位置插入len个字节的文本。如果len为-1,则文本必须以nul结尾,并将完整插入。发出“插入文本”信号;插入实际上发生在信号的默认处理程序中。插入发生时iter无效(因为缓冲区内容发生了变化),但默认信号处理程序重新验证它以指向插入文本的末尾。

     

缓冲区:GtkTextBuffer
  iter:缓冲区中的位置
  文字:要插入的UTF-8格式文字
  len:以字节为单位的文本长度,或-1

  

gchar
  typedef char gchar;
  对应标准C char类型

这意味着可以使用char *代替gchar *。
虽然我没有使用过gtk_text_buffer_insert(),但是在其他需要gchar *的gtk +函数中,char *运行得很完美。

希望它有用。

答案 2 :(得分:1)

这可能真的很晚了,但是如果有其他人坚持使用谷歌来这里:

gtk_text_buffer_insert(GTK_TEXT_BUFFER(textbuffer),&iter,buffer,strlen(buffer));

应该做的伎俩。问题是最后的空字符。因此,通过发送字符串长度,您可以在空字符之前发送所有字符。