我必須嘗試寫這樣的代碼,但我發現用的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