创建字符串的向量字符数组 我试图在C中创建一个C字符串数组,模拟C++中类似于向量数组的行为。只要(currentSize+1)等于(MAX_SIZE),阵列的容量就会翻倍。我就是这样做的: void addLog(char ** dynamicArray, int* size, int *maxSize, int command){ if (*size < *maxSize){ dynamicArray[*size] = "User selects option 1 from main menu."; (*size)++; } else{ //resizing the array here int originalSize = *maxSize; *maxSize = *maxSize * 2; //copy elements of dynamic array in temporary array char **tempArray = (char**)malloc(originalSize * sizeof(char*)); for (int i = 0; i < originalSize; ++i){ memcpy(&tempArray[i], &dynamicArray[i], sizeof(dynamicArray[i])); } //create new array of max * 2 size dynamicArray = (char**)malloc(*maxSize * sizeof(char*)); //copy temp to dynamic for (int i = 0; i < originalSize; ++i){ memcpy(&dynamicArray[i], &tempArray[i], strlen(tempArray[i])); } for (int i = 0; i < originalSize; i++) { free(tempArray[i]); <---- this throws an exception on heap } free(tempArray); //insert new element now dynamicArray[*size] = "User selects option 1 from main menu."; (*size)++; } } void addLog(char**dynamicArray,int*size,int*maxSize,int命令){ 如果(*尺寸

创建字符串的向量字符数组 我试图在C中创建一个C字符串数组,模拟C++中类似于向量数组的行为。只要(currentSize+1)等于(MAX_SIZE),阵列的容量就会翻倍。我就是这样做的: void addLog(char ** dynamicArray, int* size, int *maxSize, int command){ if (*size < *maxSize){ dynamicArray[*size] = "User selects option 1 from main menu."; (*size)++; } else{ //resizing the array here int originalSize = *maxSize; *maxSize = *maxSize * 2; //copy elements of dynamic array in temporary array char **tempArray = (char**)malloc(originalSize * sizeof(char*)); for (int i = 0; i < originalSize; ++i){ memcpy(&tempArray[i], &dynamicArray[i], sizeof(dynamicArray[i])); } //create new array of max * 2 size dynamicArray = (char**)malloc(*maxSize * sizeof(char*)); //copy temp to dynamic for (int i = 0; i < originalSize; ++i){ memcpy(&dynamicArray[i], &tempArray[i], strlen(tempArray[i])); } for (int i = 0; i < originalSize; i++) { free(tempArray[i]); <---- this throws an exception on heap } free(tempArray); //insert new element now dynamicArray[*size] = "User selects option 1 from main menu."; (*size)++; } } void addLog(char**dynamicArray,int*size,int*maxSize,int命令){ 如果(*尺寸,c,arrays,free,memcpy,C,Arrays,Free,Memcpy,您可以通过扩展结构自己创建一个可重用的实现 这有点长,但它将引导您完成整个过程,并应具备您需要了解的所有信息: 该结构将利用一个固定大小的数组,该数组带有一个计数器不变量,用于跟踪当前存在的元素数量。如果基础数组耗尽,则加法操作将通过副本将内容重新分配到更大的大小。” 这需要扩展和至少总结链接的要点才能成为一个好的答案。例如,如果一周后eddmann.com是一个色情网站呢?答案的有用性会发生某种变化。

您可以通过扩展结构自己创建一个可重用的实现

这有点长,但它将引导您完成整个过程,并应具备您需要了解的所有信息:

该结构将利用一个固定大小的数组,该数组带有一个计数器不变量,用于跟踪当前存在的元素数量。如果基础数组耗尽,则加法操作将通过副本将内容重新分配到更大的大小。”


这需要扩展和至少总结链接的要点才能成为一个好的答案。例如,如果一周后eddmann.com是一个色情网站呢?答案的有用性会发生某种变化。