DEV-C++ 查看结果

coffeebrk 2008-02-03 09:25:16
/*读入一组文本行,打印最长的一行*/

#include<stdio.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;
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;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;
}

一直都在输入 要输入什么才能结束查看结果
...全文
120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
coffeebrk 2008-02-05
  • 打赏
  • 举报
回复
==我关了QQ试试
是不是快捷键冲突哦
ltc_mouse 2008-02-04
  • 打赏
  • 举报
回复
ls上说"getline最小返回值只能是1",不太正确;lz的程序,输入Ctrl+Z是可以结束循环的。

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;
}
ltc_mouse 2008-02-04
  • 打赏
  • 举报
回复
飞刀已经说了,就是按住Ctrl键不放,按Z键,同时释放...
lockhall 2008-02-04
  • 打赏
  • 举报
回复
直接按ctrl+z啊,大哥.
coffeebrk 2008-02-04
  • 打赏
  • 举报
回复
我用的是DEV-CPP
coffeebrk 2008-02-04
  • 打赏
  • 举报
回复
楼上的 怎么输入CTRL+Z??
冰矿 2008-02-03
  • 打赏
  • 举报
回复

#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;
}
chlaws 2008-02-03
  • 打赏
  • 举报
回复

一直都在输入 要输入什么才能结束查看结果
----------------------------------------

>没见你对文件操作
>传给getline的lim = MAXLINE 你用循环做了1000次.
中间没有中断.所以按你单字符输入就输个1000次而已

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧