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];
    copy_string(str1, str2);
    printf("%s\n",str2);
    system("pause");
    return 0;
}

2.使用指针进行复制

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

void copy_string2(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_string2(str1, str2);
    printf("%s\n",str2);
    system("pause");
    return 0;
}

需要注意的是:使用指针进行复制时,str必须这样声明并初始化:char str2[] = "i am a student";,而不能使用char* str2 = (char*) "i am a student";,因为char* str2实际上是一个常量指针,是不允许修改指针指向的值的,所以会报错。

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

时间: 2024-10-06 00:07:28

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

【C语言】编写函数实现字符串旋转

//编写函数实现字符串旋转 #include <stdio.h> #include <assert.h> #include <string.h> void reverse(char *left, char *right) { char temp; assert(left); assert(right); while (right > left) { temp = *left; *left = *right; *right = temp; left++; right

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+

习题8-5 使用函数实现字符串部分复制

1 void strmcpy(char *t, int m, char *s) 2 { 3 int len = 0; //计算字符串t的长度 4 char *p = t; 5 int i; 6 while (*p != '\0') 7 { 8 len++; 9 p++; 10 } 11 12 if (m <= len) 13 { 14 for (i = 0; t[m - 1 + i] != '\0'; i++) 15 { 16 s[i] = t[m - 1 + i]; 17 } 18 s[i]

【示例】C语言中利用数组存放函数指针

C语言中利用数组存放函数指针,增加函数使用的灵活性.使用时只需提供数组索引,即可调用不同函数. 预备知识: 1.指向函数的指针 一个函数在编译时被分配一个入口地址,这个地址就被称为函数的指针. 例如: int max(int,int); // 声明函数,比较两数大小 int (*p)(); //声明指向函数的指针变量 p=max; //将函数max的入口地址赋给指针变量p int c=(*p)(a,b); //调用函数 2.函数指针作为函数参数 该例子中每次给process函数不同实参(函数名)

C语言strrev()函数:字符串逆置(倒序、逆序)

头文件:#include<string.h> strrev()函数将字符串逆置,其原型为:    char *strrev(char *str); [参数说明]str为要逆置的字符串. strrev()将str所指的字符串逆置. [返回值]返回指向逆置后的字符串的指针. strrev()不会生成新字符串,而是修改原有字符串.因此它只能逆置字符数组,而不能逆置字符串指针指向的字符串,因为字符串指针指向的是字符串常量,常量不能被修改. [函数示例]看看strrev()是否改变原有字符串. #inc

【C语言】实现一个函数求字符串长度(不能创建第三方变量)

//实现一个函数求字符串长度(不能创建第三方变量) #include <stdio.h> #include <assert.h> int my_strlen(const char *p) { assert(p); if (*p == '\0') return 0; else return 1 + my_strlen(++p); } int main() { char *p = "abcdefg"; printf("%d\n", my_strl

C语言可变参数函数实现原理

一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本文地址:http://www.cnblogs.com/archimedes/p/variable-parameter.html,转载请注明源地址. 例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x200

C语言文件操作函数的编写

 编写文件操作的头文件 /************************************************************************** Copyright(C)    :2014-08-5 toto Filename       :file.h Author          :涂作权 Version         :V1.1 Date            :2014-08-05 Description     :文件操作的头文件 Others  

C语言-字符操作函数

1字符数组的初始化: 1.1 char string={'c','h','i','n','a'} 1.2char string={"china"}或者去掉{}即char string=“china" 1.3 strcpy(string,"china") 2字符串长度:字符串长度函数strlen(char string)=字符的个数+1(结束符"\0") 3输入与输出:printf("\s",string) scanf