これはそれほど難しいことではありません。覚えておくべき重要なことは、malloc(...)またはcalloc(...)を使用して、最初にアレイにメモリを割り当てる必要があるということです。その後、アイテムが追加または削除されるときに、メモリを簡単に割り当て(または割り当て解除)できます。(配列内のアイテムを格納するために使用される)メモリを動的に追加または削除する方法は、realloc(...)です。C動的メモリ割り当てのwikiページは、実際にはかなり有益です。最初にchar*配列を割り当て、次にサイズを増やしてサイズを減らす方法を示す例を以下に示します。
#include "stdio.h"
#include "stdlib.h"
int main()
{
char *myDynamicString;
/* allocate initial memory */
myDynamicString = (char *)malloc(sizeof(char) * 2);
myDynamicString[1] = '\0';
/* set values */
myDynamicString[0] = 'A';
/* prints: A */
printf("String: %s\n", myDynamicString);
/* make string bigger */
myDynamicString = (char *)realloc(myDynamicString, sizeof(char) * 6);
myDynamicString[5] = '\0';
/* set values */
myDynamicString[1] = 'P';
myDynamicString[2] = 'P';
myDynamicString[3] = 'L';
myDynamicString[4] = 'E';
/* prints: APPLE */
printf("Bigger String: %s\n", myDynamicString);
/* make string smaller */
myDynamicString = (char *)realloc(myDynamicString, sizeof(char) * 3);
myDynamicString[2] = '\0';
/* set values */
myDynamicString[1] = 'Z';
/* prints: AZ */
printf("Smaller String: %s\n", myDynamicString);
/* don't forget to release the memory */
free(myDynamicString);
return 0;
}