一份对小程序的理解

#include<stdio.h>
#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

main()
{
 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,%d",longest,max);
 return 0;
}

int getline(char s[], int lim)
{
 int c, i;

 for(i = 0; i<lim-1 && (c=getchar())!=EOF && c!='/n';++i) //读入一行字符,ctrl+z,'/n',或者长度溢出都会停止该行的读入。
  s[i]=c;
 if(c=='/n'){                                 //判断该行的结束是ctrl+z,还是'/n'引起的,'/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;
}

 

这是一个输入多行字符,然后把最长的字符行打印到屏幕,并打印出该行的长度

这个程序的说明:1 用一维char数组存储字符行;2 ‘/n’回车符算一个字符;3 ctrl+z为输入中断;4 为每行字符添加'/0'结束符。

 

因为实现字符串是用的字符数组,所以字符串结尾标志'/0',不会自动添加到字符数组中,必须在程序中添加,所以在geline函数中,for循环语句 i<lim-1,就是说要为'/0'留出一位,因为最后main函数中printf(),用到了"%s",这个输出控制符是以'/0'判断字符串是否结束的。

 

就这点小小的认识,还费了半天尽~~ 唉,绝望了又开始。但是。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值