如何在C中创建字符串的动态数组



我想制作一个字符串数组,其中没有每个字符串的固定长度。我该怎么做?这是我的代码:

char **a;
int n, m;
scanf_s("%d %d", &n, &m);
a = (char**)malloc(n*sizeof(char*));
for (int i = 0; i < n; i++)
    a[i] = (char*)malloc(m*sizeof(char));
for (int i = 0; i < n; i++)
    for (int j = 0; j < m;j++)
    scanf_s(" %c", &a[i][j])

我必须输入一组单词,但我不知道它们的长度。在这个代码中,我只能输入特定长度的单词,我想更改它。

@Daniel说的一个例子是:

int NumStrings = 100;
char **strings = (char**) malloc(sizeof(char*) * NumStrings);
for(int i = 0; i < NumStrings; i++)
{
   /* 
      Just an example of how every string may have different memory allocated.
      Note that sizeof(char) is normally 1 byte, but it's better to let it there */
   strings[i] = (char*) malloc(sizeof(char) * i * 10);
}

如果不需要在开始时为每个字符串malloc,则可以稍后执行。如果您需要更改分配的字符串数(从reallocstrings),那么它可能会稍微复杂一些。

分配一个字符串数组char**mystrs=malloc(numstrings*sizeof(char*))。现在mystrs是一个指针数组。现在,您所需要做的就是对要添加的每个字符串使用malloc。

mystrs[0]=malloc(numchars+1*sizeof(char))。//为空字符添加额外字符

然后可以使用strcpy复制字符串数据。strcpy(mystrs[0],"mystring")

相关内容

  • 没有找到相关文章

最新更新