#include<stdio.h>#define M 20int 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' 却不已要?
1 回答
Atlas_Wu
TA贡献3条经验 获得超3个赞
自己想到了原因,就自己回答一下。
while((longest[i]=line[i])=!"\0")
是先把line[i]的值赋予longest[i],然后才判断是否等于“\0”,因此line[i]最后的“\0”已经赋予给了longest[i],
不需要再给最后的longest[i]赋予"\0"
- 1 回答
- 0 关注
- 1370 浏览
添加回答
举报
0/150
提交
取消