我试图简明扼要地介绍一下。 它应读到一条从中线,必要时重新分配缓冲面积。 还应当将品号重新编号。 它需要一个果园**,以便重新定位的缓冲能够随后释放。 我为什么会getting?
Heres my version:
int get_input_line(char **buff, int start_size) {
char c;
int stop = 0, length = 0, k = start_size;
while(!stop) {
if(length > k) {
k += 50;
buff = (char *)(realloc(buff, start_size + 1));
}
c = getchar();
if(c ==
){
stop = 1;
}
buff[length] = c;
length++;
}
return length;
}
在此呼吁:
char *buff = (char *)(malloc(50 + 1));
get_input_line(&buff, 50);
printf("%s", buff);