我无法弄清楚如何从标准输入中读取单词并将其存储在指针中。我需要随时扩展所需的内存,以便使用所需的最小内存量。
这是我使用整数的方法,但使用字符则有点困难。
int *expand(int *source, int size)
{
int *expansion = (int *)malloc(size * sizeof(int));
int i;
for (i=0; i<size-1; i++)
{
expansion[i] = source[i];
}
free(source);
return expansion;
}
int main(int argc, char **argv)
{
int *input = (int *)malloc(3 * sizeof(int));
int size = 3;//start at 3 because that's initial size
int count = 0;//position in array
fprintf(stdout, "Enter some numbers, and press 0 when you are done.\n");
int *temp;
while (1)
{
fscanf(stdin, "%d", temp);
if (*temp == 0)
{
break;
}
if (count == size - 1)
{
size++;
input = expand(input, size);
}
input[count] = *temp;
count++;
}
int i;
for (i=0; i<size - 1; i++)
{
if (i == size - 2)
{
fprintf(stderr, "%d\n", input[i]);
break;
}
fprintf(stderr, "%d, ", input[i]);
}
free(input);
return 0;
}
最佳答案
你知道realloc()
函数吗?
realloc()
函数将处理发布的场景,而不复制任何数据。 (如果需要,realloc() 函数的内部会处理复制。
关于c - 动态向 char * 添加单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400937/