大概思路:最开始定义数组的大小的时候长度用指针表示,这样在函数getline中如果数组的不够存储输入的值的时候,直接可以通过指针修改!!
#include <stdio.h>
int getline(char line[],int *lim);
void copy(char to[],char from[]);
main()
{
int len;
int max;
int MAXLINE=5;
int *p = &MAXLINE; //将MAXLINE用指针的形式表示
char line[*p];
char longest[*p];
max = 0;
while ((len = getline(line, &MAXLINE)) > 0)
if(len > max) {
max = len;
copy(longest, line);
}
if(max > 0)
printf("%s",longest);
return 0;
}
int getline(char s[], int *lim)
{
int c,i;
for(i=0; (c=getchar()) != EOF && c!='\n'; ++i)
s[i] = c;
if(i==*lim){ //添加的部分
*lim += 2; //使用指针来扩容
}
if(c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
void copy(char to[], char from[])
{
int i;
i=0;
while((to[i] = from[i]) != '\0')
i++;
}