提高项目29-字符串复制

来源:互联网 发布:淘宝商城女装裙子 编辑:程序博客网 时间:2024/06/18 18:00
任务和代码:请分别编制程序,完成下面的处理:
(1)完整复制字符串;
(2)将str1和str2接起来存放到str3中;
(3)去除str1中的空格,仍保存在str1中;

(4)将str1和str2连接起来,仍存放在str1中

/*文件名:main.c作者:小风景完成日期:2016.7.10问题描述:请分别编制程序,完成下面的处理:(1)完整复制字符串;(2)将str1和str2接起来存放到str3中;(3)去除str1中的空格,仍保存在str1中;(4)将str1和str2连接起来,仍存放在str1中;程序输出:*/#include <stdio.h>#include <string.h>void mystrcpy(char str1[],char str3[]);void mystrcat(char str1[],char str2[],char str3[]);void deletespace(char str1[]);void mystrcatsec(char str1[],char str2[]);int main(){    char str1[100]="I am a happy boy\'s daddy.",str2[100];    char str3[100] = {0} ;    int i=0,j=0;    while(str1[i]!='\0')    {        if(str1[i]!=' ')        {            str2[j]=str1[i];            j++;        }        i++;    }    str2[j]='\0';//切记!!    printf("去除空格后的字符串: %s\n", str2);    mystrcpy(str1,str3);    printf("完整复制字符串:%s\n",str3);    mystrcat(str1,str2,str3);    printf("将str1和str2接起来存放到str3中:%s\n",str3);    deletespace(str1);    printf("去除str1中的空格,仍保存在str1中:%s\n",str1);    mystrcatsec(str1,str2);    printf("将str1和str2连接起来,仍存放在str1中:%s\n",str1);    return 0;}/*函数功能:完整的复制字符串信息返回值:无*/void mystrcpy(char str1[],char str3[]){    int len = strlen(str1);    int i = 0;    for(i = 0;i < len;i++)    {        str3[i] = str1[i];    }    str3[len] = '\0';}/*函数功能:将str1和str2接起来存放到str3中返回值:无*/void mystrcat(char str1[],char str2[],char str3[]){    int len1 = strlen(str1);    int len2 = strlen(str2);    int i = 0;    memset(str3,0,100);  //讲str3中内容清空    for(i = 0;i < len1 + len2;i++)    {        if(i < len1)        {            str3[i] = str1[i];        }        else        {            str3[i] = str2[i - len1];        }    }    str3[i] = '\0';}/*函数功能:去除str1中的空格,仍保存在str1中;返回值:无*/void deletespace(char str1[]){    int len = strlen(str1);    int i = 0;    int j = 0;    for(i = 0;i < len;i++)    {        if(str1[i] != ' ')        {            str1[j] =str1[i];            j++;        }    }    str1[j] = '\0';}/*函数功能:将str1和str2连接起来,仍存放在str1中返回值:无*/void mystrcatsec(char str1[],char str2[]){    int len1 = strlen(str1);    int len2 = strlen(str2);    int i = 0;    for(i = len1;i < len1 + len2;i++)    {        str1[i] = str2[i - len1];    }    str1[i] = '\0';}


程序运行结果:



总结:这个程序完成了上述四个功能,分别通过四个小函数完成,函数之间通过将字符数组作为参数传递来完成整体大功能,但由于传递的是数组指针,指向数组的相应首地址,因此函数中修改的数组元素在函数外也已经被改变,因此,使用时应注意分清自己是否需要更改外部数组中的元素。

0 0