将char复制到char数组

时间:2013-06-11 14:04:04

标签: c char arrays

我正在尝试将“string”复制到C:

中的字符串数组
const gchar  *strAuth, *strEditor, *strTitle; 
gchar *strings[18][150];
strcpy(strings[0],strAuth);

编译时,gcc发出警告: 警告:从不兼容的指针类型[默认启用]

传递'strcpy'的参数1

可能,由于我的这个错误,检查并打印在代码的后半部分

  g_print("%s", strings[0]);
  int i=0;
  while (i <= 18) {
    if (strlen(strings[i]) != 0) {
      g_string_append_printf(tstring, "\t%s=\"%s\",\n",
      keyword[i], strings[i]);
      i++;
    } 
  }

也无效(它也打印空字符串)。 C不是我的语言,所以请帮助

NB:thecked thisthis,但未能帮助自己 NB:gchar“对应于标准C char类型。”在glib

2 个答案:

答案 0 :(得分:4)

您尚未声明字符串数组。您已经声明了一个18x150指向char的2D数组。

因此,您会收到警告:您正在尝试将字符串复制到指针数组中。

字符串数组应为char strings [18][150]

答案 1 :(得分:1)

最直接的修复(没有提出完全不同的方法)需要一些修复。

关于警告的事情是你正在创建一个18x150指针的数组,但我想你想要18个长度为150的字符串,所以定义应该是:

gchar strings[18][150];  // 18 strings of 150 chars

你的代码看起来的方式,你可能也会假设初始化为零(如果没有填充空字符串),你可以添加:

gchar strings[18][150]= { "", };  // 18 empty strings of 150 chars

代码中的另一个(更严重的)错误是您的循环正在运行[0 ... 18]。但是你的字符串列表只有gchar *strings[18][150];所以应该运行[0..17]。当长度字符串[i]为零时,也应该发生I的增量(否则你将获得一个无限循环,如果一个字符串为空,则永远不会到达结尾)。

  while (i < 18) {  // <-- FIX 
    if (strlen(strings[i]) != 0) {
      g_string_append_printf(tstring, "\t%s=\"%s\",\n",
      keyword[i], strings[i]);
    } 
    i++;  // <-- FIX 
  }