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

第一种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    for (; *p1 != ‘\0‘; *p1++,*p2++)
    {
        *p2 = *p1;
    }
    *p2 = ‘\0‘;
}

int main() {
    char* str1 = (char*) "hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n",str2);
    system("pause");
    return 0;
}

第二种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    while ((*p2 = *p1) != ‘\0‘)
    {
        *p2++;
        *p1++;
    }
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", str2);
    system("pause");
    return 0;
}

第三种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    //指针运算符比++优先级高
    //也就是先将*p1的值给*p2,再进行++操作,i++是先赋值,后自增
    while ((*p2++ = *p1++) != ‘\0‘)
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", str2);
    system("pause");
    return 0;
}

第四种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    while (*p1 != ‘\0‘) {
        *p2++ = *p1++;
    }
    *p2 = ‘\0‘;
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", str2);
    system("pause");
    return 0;
}

第五种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    //当*p2++ = *p1++变为0时,就会结束循环
    while (*p2++ = *p1++) {
        ; //‘\0‘ == 0;结束标志
    }
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", str2);
    system("pause");
    return 0;
}

第六种:

#include<stdio.h>
#include<iostream>

void copy_string(char* p1, char* p2) {
    for (; *p2++ = *p1++;) {
        ; //‘\0‘ == 0;结束标志
    }
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", 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‘) {
        ; //‘\0‘ == 0;结束标志
    }
}

int main() {
    char* str1 = (char*)"hello world";
    char str2[] = "i am a student";
    copy_string(str1, str2);
    printf("%s\n", str2);
    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/xiximayou/p/12121521.html

时间: 2024-10-25 18:48:52

c语言之利用指针复制字符串的几种形式的相关文章

C语言之深入指针与字符串

<span style="font-family:KaiTi_GB2312;font-size:24px;">#include<stdio.h> #include<stdlib.h> //要使用malloc(),必须包含此库文件 void main() { char count, *ptr1, *p; ptr1 = malloc(27*sizeof(char)); ptr1[26] = 0;//字符串要加0 if (ptr1 == NULL) { p

C语言中存储多个字符串的两种方式

C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[4][10] = { "Justinian", "Momo", "Becky", "Bush" }; 在内存中的存储: J u s t i n i a n \0 M o m o \0 \0 \0 \0 \0 \0 B e c k y \0 \0 \0 \0 \0 B u s h \0 \0 \0 \0 \0 \0 这种方式会造成内存空间

c语言:利用指针变量,用函数实现将3个整数按从大到小的顺序输出

利用指针变量,用函数实现将3个整数按从大到小的顺序输出. 解:程序: #include<stdio.h> void swap(int *ptr1, int *ptr2) { int temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; } void exchange(int *q1, int *q2,int *q3) { void swap(int *ptr1, int *ptr2); if (*q1 < *q2) { swap(q1, q2); } if

c语言之利用函数实现字符串的复制

1.使用数组下标进行复制 #include<stdio.h> #include<iostream> void copy_string(char str1[], char str2[]) { int i = 0; while (str1[i] != '\0') { str2[i] = str1[i]; i++; } str2[i] = '\0'; } int main() { char str1[] = "hello world"; char str2[30];

C语言关于利用sscanf实现字符串相加减

#include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "99999"; char str2[10] = "1111111"; char str[30]; int k = 0, i = 0, j = 0; for (k = 0; k < 30&&i<strlen(str1);){ str[k++] = str1[i+

【c语言】利用指针进行两个数的交换。

#include<stdio.h>void swap(int *a,int *b){    int temp;    temp=*a;    *a=*b;    *b=temp;}void main(){    int a,b,*m,*n;    a=4;    b=5;    m=&a;    n=&b;    printf("a=%d,b=%d\n",a,b);    swap(m,n);    printf("a=%d,b=%d\n"

C语言实现二级指针表示字符串数组

头文件: #include<stdlib.h> #include<stdio.h> #include<string.h> 函数原型: char ** createBuff(char **buff, int arraylength, int charLength); //创建二级指针 void initDemo(char **buff, int arrayLength); //初始化二级指针 void destoryBuff(char **buff, int arrayL

strcpy 通过指针复制字符串出错问题

还是 C++ 吧里的一个问题, 问题是这样的: char* p = "shen me gui"; char* q = "hehe"; strcpy(p, q); 为何会出错. 我当时其实也是挺奇怪, 主要我入门就是 C++ 11 标准, string 用惯了. 后来问题解决了, 是因为如此初始化的指针是一个常量指针, 所以对它们操作自然就错了. 我现在一想起来就觉得恶心, 常量你咋就没 const 呢? 正确的写法是这样的: char str1[] = "

【c语言】利用指针求三个数的最大数和最小数

比较费空间的笨方法: #include<stdio.h>void main(){    int i,j,k,*m,*n,*q,temp;    printf("请输入三个数:");    scanf("%d,%d,%d",&i,&j,&k);    printf("三个数是:%d,%d,%d\n",i,j,k);    m=&i,n=&j,q=&k;    if(*n<*m){