我正在尝试解决这个问题。我是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/