为了账号安全,请及时绑定邮箱和手机立即绑定

字符串数组的复制

字符串数组的复制

C
Atlas_Wu 2017-04-06 18:48:19
#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"


查看完整回答
反对 回复 2017-05-03
  • 1 回答
  • 0 关注
  • 1378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信