c语言:两种方法实现字符串拷贝strcpy

实现字符串拷贝strcpy

方法一:

// 字符串拷贝函数的实现

#include<stdio.h>

#include<assert.h>

void my_strcpy(char *dest,  char *src)//src表示source源,dest目标

{

assert(dest!=NULL);

assert(src);

char *ret = dest;

while (*dest++ = *src++)

{

;

}

return dest;

}

int main()

{

char arr[20];

char *p="change world!" ;

my_strcpy(arr, p);

printf("arr=%s\n",arr);

return 0;

}

方法二:防御性的编程

// 字符串拷贝函数的实现

#include<stdio.h>

#include<assert.h>

#define false 0

char my_strcpy(char *dest,  char const *src)//src表示source源,dest目标

{

if (src == NULL)

{

assert(false);

return 0;

}

if (dest == NULL)

{

assert(false);

return 0;

}

char *ret = dest;

while ((*dest++ = *src++)!=‘\0‘)

{

;

}

return ret;

}

int main()

{

char arr[20];

char *p="change world!" ;

my_strcpy(arr, p);

printf("arr=%s\n",arr);

return 0;

}

结果:

arr=change world!

请按任意键继续. . .

时间: 2024-12-23 22:05:19

c语言:两种方法实现字符串拷贝strcpy的相关文章

字符串操作1 - 递归与非递归两种方法求字符串长度

1 //递归求字符串的长度 2 int RecurseLength(const char *str) 3 { 4 if(str == NULL || *str == '\0') 5 return 0; 6 7 if(*str == '\0') 8 return 0; 9 return RecurseLength(str+1) + 1;//返回当前字符数,再递归处理下一个字符 10 } 11 12 13 14 15 16 //非递归求字符串长度 17 int NonRecurseLength(co

输入带空格字符串的两种方法

这是我们平常用的: char s[100]; scanf("%s",s);//cin>>s; 输入字符串时,当遇到空格就自动停止输入,导致空格后门的字符没有按我们设想的输入. 现在有两种方法可以输入带空格的字符串: 第一,用get()函数: char str[100]; get(str); 注:get()函数在linux使用会有这条错误.在linux(fedora10)下的话建议使用第二种方法. test.o: In function `main': test.c:(.te

选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别

一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 var data={ "show_in_list": 1, "enums": [ { "value": "B2B", "key": "1" }, { "value": &

【C++】int转换为string的两种方法(to_string、字符串流)

本文转自http://blog.csdn.net/chavo0/article/details/51038397 记录一下用到过的int转换成string的两种方法 第一种是to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long啦~) to_string这个函数还是很强大的! string to_stri

abap中查找某字符串的两种方法

abap中查找某字符串的两种方法: 一.RPR_ABAP_SOURCE_SCAN 可以用于搜索SAP中的程序代码,一般使用时填写开发类.程序名及需要查找的字符串即可,选择屏幕布局和功能很简单,熟悉ABAP代码的人一看就明白了,不多解释了,使用方法及截图如下.选择范围太大的话很慢,可以考虑放到后台运行,结束了再看结果. 用这个程序查看某些特征的代码很有效,比如查找所有程序中这样的代码等. 1 SE38回车 2 程序名:RPR_ABAP_SOURCE_SCAN 3 F8 Execute 二.当然也可

Python 中格式化字符串 % 和 format 两种方法之间的区别

Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, 250) # 使用%来格式化 s1 = "敌人坐标:%s" % c 上面的代码很明显会抛出一个如下的TypeError: TypeError: not all arguments converted during string formatting 像这类格式化的需求我们需要写成下面丑陋

shell 脚本实现乘法口诀表的两种方法——shell与C语言

shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码: 1 #!/bin/bash 2 if [ $# -eq 0 ] //用于判断输入的参数个数为0 3 then 4 echo "welcome you!" 5 echo "this is a test with 2 methods to output arbitrarily mux table!" 6 else 7 echo "sorry you input invlia

【c语言】期望输出str = hello world 的两种方法

// 期望输出str = hello world 的两种方法 #include <stdio.h> char *GetStr(char **p) { *p = "hello word"; return *p; } int main() { char *str = NULL; if (NULL != GetStr(&str)) { printf(" str = %s\n",str); } return 0; } </pre><pr

Qt连接数据库的两种方法

我曾经想过,无论在哪个平台下开发,都不要再接触SQL Server了,但显然不行.我们是来看世界的,不是来改变世界的,想通就好. 前两天,尝试了一下Qt下远程访问数据库.在macOS下,用Qt 5.11写个程序来远程访问Win10下的SQL Server和My SQL数据库,Qt中通过QSqlDatabase来创建一个数据库连接.简单来说,QSqlDatabase连接数据库可以分为两种方式,聊到这两种方式,就要大概的说一下数据访问的前因后果,以微软的数据访问历史为例,本文只是从快速使用的角度出发