• c语言之利用指针复制字符串的几种形式


    第一种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        for (; *p1 != ''; *p1++,*p2++)
        {
            *p2 = *p1;
        }
        *p2 = '';
    }
    
    int main() {
        char* str1 = (char*) "hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ",str2);
        system("pause");
        return 0;
    }

    第二种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        while ((*p2 = *p1) != '')
        {
            *p2++;
            *p1++;
        }
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }

    第三种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        //指针运算符比++优先级高
        //也就是先将*p1的值给*p2,再进行++操作,i++是先赋值,后自增
        while ((*p2++ = *p1++) != '')
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }

    第四种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        while (*p1 != '') {
            *p2++ = *p1++;
        }
        *p2 = '';
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }

    第五种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        //当*p2++ = *p1++变为0时,就会结束循环
        while (*p2++ = *p1++) {
            ; //'' == 0;结束标志
        }
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }

    第六种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char* p1, char* p2) {
        for (; *p2++ = *p1++;) {
            ; //'' == 0;结束标志
        }
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }

    第七种:

    #include<stdio.h>
    #include<iostream>
    
    void copy_string(char str1[], char str2[]) {
        char* p1, * p2;
        p1 = str1;
        p2 = str2;
        while((*p2++ = *p1++)!='') {
            ; //'' == 0;结束标志
        }
    }
    
    int main() {
        char* str1 = (char*)"hello world";
        char str2[] = "i am a student";
        copy_string(str1, str2);
        printf("%s
    ", str2);
        system("pause");
        return 0;
    }
  • 相关阅读:
    .NET基础之:i++和i=i+1和++i的区别
    几个缩写
    下一步工作的一些思考和问题
    显著提高应变的定位精度和颗粒大小
    两个使用的Ajax Demo
    SQL Service查询分析
    自学面向对象
    支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)
    WCF学习经验分享,如何更好地学习WCF?
    Custom DataContractSerializerOperationBehavior
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12121521.html
Copyright © 2020-2023  润新知