我想制作一个字符串数组,其中没有每个字符串的固定长度。我该怎么做?这是我的代码:
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
,则可以稍后执行。如果您需要更改分配的字符串数(从realloc
到strings
),那么它可能会稍微复杂一些。
分配一个字符串数组char**mystrs=malloc(numstrings*sizeof(char*))。现在mystrs是一个指针数组。现在,您所需要做的就是对要添加的每个字符串使用malloc。
mystrs[0]=malloc(numchars+1*sizeof(char))。//为空字符添加额外字符
然后可以使用strcpy复制字符串数据。strcpy(mystrs[0],"mystring")