您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 关于strcat和自加的问题~

关于strcat和自加的问题~

来源:网络整理     时间:2016/7/18 16:22:03     关键词:

关于网友提出的“ 关于strcat和自加的问题~”问题疑问,本网通过在网上对“ 关于strcat和自加的问题~”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于strcat和自加的问题~
描述:

我写了一个strcat()的函数~有两个地方不明白?希望高手能帮我解决一下~~谢谢
1、A处和B处这两种写法有什么区别?为什么用A处的不能输出正确结果?
2、C处这样写为什么可以?
如下:
#include
#include  
char *strcat (char *strDest, const char *strSrc)//const for pointer no data
{
 char *address=strDest;
 assert(strDest!=0 && strSrc!=0);
/* 
while(*strDest++)                             //A
 {
 }
*/ 
  while(*strDest!='\0') strDest++;             //B
                                          
 while(*strDest++= *strSrc++)                  //C
 {
 }
 
 return address;
}
void main()
{
char dest[20]="abc";
char *src="defg";
strcat(dest, src);
printf("%s", dest);
}


解决方案1:

//B中的strDest++; 在最后一次循环中没得到执行,所以两次的程序不一样。

解决方案2:

你的程序是不是A or B + C?
A或者B目的是查找dest的‘/0’(或者说将指针移到字符串尾部)?
A与B的区别是*和++的优先级的问题,*要小于++,A先移才比较,B是比较才移,当然不同咯。

解决方案3:


while(*strDest++) //A
{
    ;//
}
//跳出之后strDest指向'\0'的下一个字符,所以相当于'\0'没有被跳过
//假设char a[100] = "123", b[] = "456";
//则执行楼主的函数strcat(a, b);之后a[] = {'1', '2', '3', '\0', '4', '5', '6', '\0'};

注意'3'后面的'\0'; 解决方案4:


while(*strDest++) //A
{
    ;//
}
//跳出之后strDest指向'\0'的下一个字符,所以相当于'\0'没有被跳过

以上介绍了“ 关于strcat和自加的问题~”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2777263.html

相关图片

相关文章