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

如下是字符串连接函数,我对while(*a)和while(*b)不是很明白,求解释

如下是字符串连接函数,我对while(*a)和while(*b)不是很明白,求解释

C
芜湖不芜 2022-12-21 17:13:08
#include <stdio.h>void strcat(char *,char *);main(){char s1[80];char s2[80];scanf("%s %s",s1,s2);printf("%s\t%s\n",s1,s2);strcat(s1,s2);printf("%s",s1);getch();}void strcat(char *a,char *b){while(*a)a++;while(*b)*a++=*b++;}我只知道是空串,NULL时跳出循环。。但是当我换成while(*a!=‘\0’)时就得不到正确结果了。。希望高手们可以给我解释一下。
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

你的这个函数有问题, 而不是while怎么判断的问题

void strcat(char *a,char *b)
{

while(*a != '\0')
a++;
while(*b != '\0')
*a++=*b++;
*a = '\0'; //后面应该加上'\0',不然你的字符串怎么结束, 这里加了怎么while都没有问题
}

查看完整回答
反对 回复 2022-12-25
?
Helenr

TA贡献1780条经验 获得超3个赞

while可以用作无穷循环,很多地方都用到无穷循环。一个无穷循环如下所示:
while(true)
{  
循环内容;  
...
}
无穷循环可以由自己循环中的某个条件式来结束。下面是一个循环内部终止的例子:
while(true) { 语句; if(条件式) break; // 跳离循环 ... }
当条件式成立时,会执行break离开while循环,这个break与switch中的作用是一样的,都是要离开当时执行的程序块时使用。

class 
TestWhile

public static void 
main(String[] args) 

{

while(true)



System.out.println( "执行 
"); 

//值为真用break跳出执行while之后的语句

if(true)



break; 

}

System.out.println( "继续执行 "); 

}

}

}

//无穷循环固定格式为while(true),其中括号里的值固定为boolean型,并且要为真时,才会执行下面的语句.

class 
TestWhile

public static 
void main(String[] args) 

{

boolean flag = 
false;

while(flag)  
//这时括号里的值为假,所以下面的语句都不会执行.如果改成while(!flag)就可以执行了.



System.out.println( "while为真时执行 ");

//值为真用break跳出执行while之后的语句

if(true) 



break; 

}

System.out.println( "继续执行 
"); 

}

}
}



查看完整回答
反对 回复 2022-12-25
  • 2 回答
  • 0 关注
  • 54 浏览

添加回答

举报

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