C语言 如何将gchar*转换为char



当我按下键盘上的一个键(整数)时。它的作用类似于:

 gchar *keypressed;
 keypressed=gdk_keyval_name (event->keyval);
 printf("The KeyEvent is: %sn", keypressed); // Till here it is fine    

当我这样做时,我得到分段错误:

char ch;
sprintf(ch, "%sn", keypressed);   
printf("The NewKeyEvent is: %sn",ch);

我需要转换它,因为我要在切换情况中使用该值。不转换是不可能的

gcharchartypedef别名,因此问题不在于类型转换。您需要为sprintf缓冲区分配一些空间。

当前,您正在传递一个未初始化的char到指针的位置。除了由未定义的行为引起的段错误之外,您还应该从编译器获得一个警告。

要解决这个问题,创建一个char s数组并将其传递给sprintf:

char ch[10];
sprintf(ch, "%8sn", keypressed);   
printf("The NewKeyEvent is: %sn", c);

注意sprintf中8的限制。这是因为ch的大小是10,我们需要为'n'''增加两个位置。

如果您只想从keypressed字符串中获取一个字符,有两种方法:

  1. 使用数组索引,这样你可以访问字符串中的任何字符:

    char ch = keypressed[x];  // Where `x` is the character number you want
    

    请记住,数组索引从0开始,因此字符串中的第一个字符是数字0

  2. 如果需要第一个字符,还可以使用解引用操作符

    char ch = *keypressed;
    

    相当于

    char ch = keypressed[0];
    

相关内容

  • 没有找到相关文章

最新更新