69,336
社区成员
发帖
与我相关
我的任务
分享
int getline(char s[], int lim)
{
int c,i;
/*
循环结束条件有3个, i>=lim-1 或者 (c=getchar())==EOF 或者 c=='\n'
输入Ctrl+Z,就能让getchar得到EOF,这种情形下,返回值是0。
*/
for(i = 0; (i<lim-1) && ((c=getchar())!=EOF) && (c!='\n'); ++i)
s[i]=c;
if(c == '\n')
{
s[i] = c;
++i;
}
s[i]='\0';
return i;
}
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 1000
int getline(char line[], int maxline);
void copy(char to[], char from[]);
int main(void)
{
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0; /*终于找到了,getline最小返回值只能是1*/
while((len = getline(line,MAXLINE)) > 1) /*所以将0改为1否则跳不出循环,*/
if(len > max) /*改为1后不输入,直接回车,长度返回为1,循环就可以跳出了*/
{
max = len;
copy(longest, line);
}
if(max > 0)
printf("%s",longest);
system("PAUSE");
return 0;
}
int getline(char s[], int lim)
{
int c,i;
for(i = 0; (i<lim-1) && ((c=getchar())!=EOF) && (c!='\n'); ++i)
s[i]=c;
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;
}