繁体   English   中英

用C编码,为什么我的数组值改变?

[英]Coding in C, Why are my array values changing?

我正在使用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;
    }
}

尝试改变

    NameList[j] = chr2;

    NameList[j] = strdup(chr2);

看看会发生什么。 问题是您只存储了一个指向char数组的指针,而char数组正在从您的下方改变。 strdup函数复制整个数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM