将char复制到char数组

我试图将一个“字符串”复制到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:gchar“对应于标准的C char类型。” 在滑稽

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

关于警告的事情是你正在创建一个18×150指针的数组,但我想你想要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 } 

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

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

一串字符串就是char strings [18][150]