我正在尝试将“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不是我的语言,所以请帮助
答案 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
}