我正在尝试解决这个问题。我是C语言的初学者。

                        uint8_t *instrumentStringsCount;
instrumentStringsCount = malloc(sizeof(uint8_t));
dbGettingStringsNumbers(instrumentStringsCount, familyID);
uint8_t sizeCount = instrumentStringsCount[0];
uint8_t i = 0;

char stringTransferArray[10];
char *mainArray[sizeCount];

while(i < sizeCount)
{
    sprintf(stringTransferArray, "%d strings", instrumentStringsCount[i+1]);
    mainArray[i]= stringTransferArray;
    i++;
}


事实是stringTransferArray是动态变化的(instrumentStringsCount:从数据库中获取)。因此,指针的值始终会更改为数组中的最后一个值。
我知道原因。但是,我只需要一种解决方法。

感谢您的努力

最佳答案

我的问题在这一行:mainArray [i] = stringTransferArray; stringTransferArray正在更改,并且发生这种情况时,mainArray的所有值都显示与stringTransferArray相关的最后一个值


至于您的问题,有一些函数可以复制字符串。它不是在C规范中真正标准化的,但是我知道没有平台没有strdup功能。
                    –一些程序员伙计

关于c - 将动态变化的数组的值保存到指针C中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41084734/

10-12 06:58