修改打印最长行的MAIN函数,使之可以打印任意长度<The C Programming Language>课后习题

#include<stdio.h>
#define MAXLINE 88

int getline(char s[], int limit );
void copy(char to[] ,char from[]);

main()
{	
	int len ;
	int max ;
	int i ;
	char line[MAXLINE] ;
	char longest[MAXLINE] ;
	max = 0 ;
	
	while((len = getline(line , MAXLINE)) > 0){
		printf("%d-%s\n",len , line) ;
		if(len > max){
			max = len ;
			copy(longest , line);
		}
	}
	if(max > 0)
		printf("%s",longest) ;
		
	return 0 ;
}

int getline(char s[] , int limit)
{
	int i,c,j;
	j = 0 ;
	i = 0 ;
	while((c = getchar()) != EOF && c != '\n'){
			if(i < limit - 2){
				s[j] = c ;
				++ j ;
			}
				
			++ i ;
		}
	if( c == '\n'){
		s[j] = c ;
		++ i ;
		++ j ;
	}									//判断最后一个字符是否为换行符 
	s[j] = '\0'	 ;
	return i ;	
	
}

void copy(char to[] , char from[])
{
	int i = 0 ;
	while((to[i] = from[i]) != '\0') 
		++ i ;
	
}
PS,这里 i < limit - 2 ,我怎么觉得原getline()函数也应该i < limit - 2 而不是小于 limit - 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值