• 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;
    }
  • 相关阅读:
    flush()方法
    多对一关联映射(manytoone)
    Hibernate配置数据库解决插入乱码问题
    lazy
    一对多关联映射(单向)
    属性类的映射
    多对多关联(双向)
    多对多关联映射(单向)
    多态查询
    Visual C# 2008+SQL Server 2005 数据库与网络开发11.2.2 LINQ的基本查询操作
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12121521.html
Copyright © 2020-2023  润新知