#include<stdio.h>
#define M 20
int getline(char line[ ]); //获得字符串
void cpystr(char longest[ ], char line[ ]); //将最长的字符串复制到 longest[ ]中
int main()
{
char line[M],longest[M];
int len;
int max=0;
while((len=getline(line))>0) // this statement test if there is another line
{
if(len>max)
{
max=len;
cpystr(longest,line);
}
}
if(max>0)
printf("%d\t%s\n",max,longest); //line[] and longest must be the char type here
else printf("please input a line\n"); // in case of error here
return 0;
}
int getline(char line[])
{
int i;
int c;
for(i=0;i<M-i && ((c=getchar())!=EOF) && c!= '\n'; i++)
{
line[i]=c;
}
line[i]='\0'; // this statement can not be left out, it's the symbol of end
return i-1;
}
void cpystr(char longest[],char line[])
{
int i=0;
while((longest[i]=line[i])!='\0')
i++;
longest[i]='\0';
}
这个程序是检测输入的字符串,并输出最长的一个字符串及其长度;
在程序中有两处加粗的地方,是给字符串作为结尾。我的问题是为什么上面那个line [i] ='\0'去掉后后影响结果,
而下面那个longest [i] = '\0' 却不已要?
Atlas_Wu
相关分类