gpt4 book ai didi

用 C 编写代码,为什么我的数组值会发生变化?

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:55 24 4
gpt4 key购买 nike

我正在使用 GDB 遍历我的代码,每次进入 while 循环时,NameList[] 中的值都会改变。就像我将 NameList[0] 设置为 chr2,但是当我返回 gdb 中的 while 循环时,我说x/s 名称列表[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;
}
}

最佳答案

尝试改变

    NameList[j] = chr2;

    NameList[j] = strdup(chr2);

然后看看会发生什么。问题是您只是存储指向char 数组,那个 char 数组正在从你的下面变出来。 strdup函数复制整个数组。

关于用 C 编写代码,为什么我的数组值会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com