您的位置:首页 > 其它

字符串指针作为函数的参数.实现strcpy()函数

2014-10-15 17:22 821 查看
#include <stdio.h>

int cpystr (char *pss, char *pds)

{

         while((*pds=*pss)!='\0')

         {

                   pds++;

                   pss++;

         }

         return 0;

}

int main()

{

         char *pa="hello world",b[10],*pb;

         pb=b;

         cpystr(pa,pb);

         printf("string a=%s\nstring b=%s\n",pa,pb);

         return 0;

}

Cpystr函数的形参是两个字符指针变量。Pss指向源字符串,pds执行目标字符串。

在上面的代码中,程序完成了两项工作:一是把pss指向的源字符串复制到pds所指向的目标字符串中,二是判断所复制的字符是否为’\0’,若是则表明源字符串结束,不再循环。否则,pds和pss都加1,指向下一个字符。在主函数中,以指针变量pa,pb为实参,分别取得确定值后调用cpystr()函数。由于采用的指针变量pa和pss,pb和pds均指向同一字符串,因此在主函数和cpystr函数中均可使用这些字符串。也可以把coystr函数简化为一下形式:

         int cpystr (char *pss, char *pds)

         {

         While((*pds++ = *pss++)!=’\0’);

         return 0;

         }

即把指针的移动和赋值合并在一个语句中。进一步分析还可以发现’\0’的ASCII码为0,对于while语句只看表达式的值为非0就循环,为0则结束循环,因此也可以省去”!=’\0’
”这个判断部分,而写为一下形式:

         int cpystr (char *pss, char *pds)

         {

                  While(*pds++ = *pss++);

                  return 0;

         }

表达式的意义可解释为,源字符串向目标字符串赋值,移动指针,若所有赋值为非0则循环,否则结束循环。这样是程序更加的简洁。简化后的源程序就非常的简洁了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐