#include <stdio.h>
#include <malloc.h>
#define MAXLINE 2
/*
main()
{
int fahr = 0;
while((fahr = getchar()) != EOF)
++fahr;
printf("%d",fahr);
}*/
int getline(char line[], int maxline);
void copy(char to[], char from[]);
main()
{
int len, max;
char line[MAXLINE], longest[MAXLINE];
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 len)
{
int c, i;
int step = 2;
for (i = 0; (c = getchar())!=EOF && c != '/n'; ++i)
{
if (i < len -1)
{
s[i] = c;
}
else
{
int j;
char *parr;
parr = (char*)malloc(sizeof(char)*(step * len));
len = step * len;
parr[i] = c;
for (j = 0; j < i; ++j)
{
parr[j] = s[j];
}
++step;
s = parr;
}
//改了这个地方,但是s的地址在这个函数里面改变了,出去了却是不变的。所以还是无法改过来。不能在这里面换地址。
看了习题里面的,只是直接的用一个j代替i的限制。觉得虽然不会越界,但是这样做应该比较危险吧。如果后面的数据时有用的怎么办。但是我也想不出其他办法,等看了指针后再来看看这题吧。
}
if (c == '/n')
{
s[i] = '/n';
++i;
}
s[i] = '/0';
len[0] = i;
return s;
}
void copy(char to[], char fr[])
{/*
for (int i = 0; fr[i] != '/0'; i++)
{
to[i] = fr[i];
}
to[++i] = '/0';*/
int i;
i = 0;
while((to[i] = fr[i] ) != '/0')
++i;
}