我必须尝试写这样的代码,但我发现用的memcpy段故障问题(我已经尝试看看与调试代码)的memcpy,分段错误
FILE *tp;
int l = 0;
while ((fgets(buffer, sizeof buffer, tp))) {
// search equal sign
char *equalsign = strchr(buffer, '=');
l++;
// search quote near value
char *q1 = equalsign + 1;
char *q2 = strchr(q1 + 1, '"');
// extract name and value
char* names = strndup(buffer, equalsign - buffer);
char* values = strndup(q1 + 1, q2 - q1 - 1);
memcpy(g_names,names,strlen(names));
memcpy(g_values,values,strlen(values));
free(names);
free(values);
}
与
const char* g_names[SIZE] = { 0, };
char* g_values[SIZE] = { 0, };
char buffer[MAXLINE] = {0,};
定义为全局。与调试我已经看到问题是与memcpy(分段错误)。任何人有建议? 谢谢。 此致敬礼。
'memcpy(g_names,names,strlen(names));'会**总是**导致一个未终止的字符串。 – wildplasser 2014-11-02 15:47:17