第十六周项目2---用指针万字符串(字符串的连接)

来源:互联网 发布:群发短信软件电脑版 编辑:程序博客网 时间:2024/06/06 01:17

  1. *   
  2. * Copyright (c) 2014, 烟台大学计算机学院   
  3. * All rights reserved.   
  4. * 文件名称:test.cpp   
  5. * 作    者:吴英政  
  6. * 完成日期:2014 年 12  月  16 日   
  7. * 版 本 号:v1.0   
  8. *   
  9. * 问题描述:用指针作形参,其核心是实现char *pstrcat(char *str1, const char *str2)函数。;   
  10. * 输入描述:无需输入;   
  11. * 程序输出:输出要求输出的。  
  12. #include <iostream>using namespace std;char *pstrcat(char str1[], const char *str2);int main(){    char s1[50]="Hello world. ";    char s2[50]="Good morning. ";    char s3[50]="vegetable bird! ";    pstrcat(s1,s2);    cout<<"连接后:"<<s1<<endl;    cout<<"连接后:"<<pstrcat(s2,s3)<<endl;    return 0;}//在下面的实现中,str1用指针法访问,而str2用下标法访问//在实际工程中,这种风格并不好,要尽可以用同一种方式,一般而言,指针法效率更高//此处str2用下标法访问,除了作为示例的考虑外,还有一个难言之隐//如果声明char *q,并用q=str2、q++等操作,这是非法的,因为str2有const的限制,从而赋值不兼容//如何修改,请思考char *pstrcat(char *str1, const char *str2){    char *p;    //char *q=str2;  //如果这样会出现错误,如何改程序,可有多种改法    int i;    for(p=str1; *p!='\0'; p++); //找到str1的结束    for(i=0; *(str2+i)!='\0'; i++,p++)  //如果q的定义通过,可以用*(q+i)代替*(str2+i)    {        *p=*(str2+i);    }    *p='\0';//切记!!    return str1;}
  13. <img src="http://img.blog.csdn.net/20141216130159527?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3l6OTUwNjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

0 0
原创粉丝点击