我正在使用GDB来浏览我的代码,每次输入while循环时,NameList []中的值都会发生变化。就像我将NameList [0]设置为chr2,但是当我回到gdb中的while循环时,我说 x / s NameList [0] 现在它被设置为chr2的新值! 这怎么可能发生? 我知道我正在更改指针,但是数组不应该存储指针的旧值而不允许更新?
while (fgets(thisline, length, input) != NULL) {
chr = strtok(Line, " ");
if(chr != NULL) {
chr2 = strtok(chr, " ")
int j = 0;
while(NameList[j] != NULL) {
j++;
}
NameList[j] = chr2;
}
}
答案 0 :(得分:1)
尝试更改
NameList[j] = chr2;
到
NameList[j] = strdup(chr2);
看看会发生什么。问题是你只是存储指针 char数组,并且char数组正在从你下面改变。这个结论 函数复制整个数组。