#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'判断字符串是否结束的。
就这点小小的认识,还费了半天尽~~ 唉,绝望了又开始。但是。。。