我无法弄清楚如何从stdin读取单词并将它们存储在指针中。我需要扩展所需的内存,以便使用所需的最小内存量。
以下是我用int进行的方法,但是使用chars会有点困难。
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;
}
答案 0 :(得分:0)
你知道realloc()
功能吗?
realloc()
函数将处理已发布的场景,而不会复制任何数据。 (如果需要,realloc()函数的内部处理复制。