关于realloc的问题(C和指针第十一章编程练习3),能编译不能运行,求解
//编写一个函数,从标准输入读取一个字符串,把字符串复制到动态分配的//内存中,并返回该字符串的拷贝。这个函数不应该对读入字符串长度作任何限制
#include<stdio.h>
#include<stdlib.h>
char *readstring(void);
int main(void)
{
char *str = readstring();
if(str == NULL)
printf("error\n");
else
printf("%s\n",str);
return 0;
}
char *readstring(void)
{
char *array,*p;
char *ptr;
int length = 0;
array = (char *) malloc (sizeof(char));
gets(ptr);
if (ptr == NULL || array == NULL)
return NULL;
while(*(ptr + length) != '\0')
length++;
array = (char *) realloc (array,(length + 1) * sizeof(char));
if(array == NULL)
return NULL;
for(int i = 0; i < length; i++)
array[i] = *(ptr + i);
array[length] = '\0';
p = array;
free(array);
return p;
}