c语言寻找子字符串拷贝,C语言:字符串拷贝(截取)、查找

C语言:字符串拷贝(截取)、查找

很惭愧,学了这么久别的语言,一直没有好好学C和C++,所以现在开始认真C/C++的一些特性和比较,这里记录下C语言拷贝和截取的一些方式,由于系统库带的函数不方便,所以自己写了几个工具小函数来使用。

字符串拷贝

我们也可以使用 strncpy 函数或者 memcpy 方式来复制。

#include

#include

#include

#define N (10)

int main()

{

char* p1 = "abcde";

char* p2 = (char*)malloc(sizeof(char) * N);

char* p3 = (char*)memcpy(p2, p1, N);

printf("p2 = %s\np3 = %s\n", p2, p3);

free(p2);

p2 = NULL;

p3 = NULL;

system("pause");

return 0;

}

运行结果:

p2 = abcde

p3 = abcde

代码说明:

1) 代码首先定义p1,p2,p3三个指针,但略有不同,p1指向一个字符串字面值,给p2分配了10个字节的内存空间。

2) 指针p3通过函数memcpy直接指向了指针p2所指向的内存,也就是说指针p2、p3指向了同一块内存。然后打印p2,p3指向的内存值,结果是相同的。

3) 最后按照好的习惯释放p2,并把p3也置为NULL是为了防止再次访问p3指向的内存,导致野指针的发生。

我们也可以自己写一个简单的字符串拷贝函数来进行拷贝。

/*

由于 C 语言的字符串拷贝函数不是很好用,自己可以写一个简单的拷贝函数

dst 为目标地址 src 为源字符串地址 n 为复制的长度

*/

char *copy(char *dst, char *src, int n) {

char *p = src;

char *q = dst;

int len = strlen(src);

if(n > len) n = len;

while (n--)

{

*(q++) = *(p++);

}

*(q++)='\0'; // 在末尾添加上

return dst;

}

字符串查找

我们可以使用 string.h 中的系统函数来进行子字符串的查找。

/*

字符串查找可以使用 strstr 函数

*/

char a[100] = "abcdefgh";

char b[100] = "cd";

char *p = strstr(a, b);

printf("b is at a: %d\n", p-a+1);

欢迎访问我的博客和github!

C语言字符串拷贝

C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include #include #include

Swift3.0语言教程分割字符串与截取字符串

Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...

Oracle截取字符串函数和查找字符串函数,连接运算符||

参考资料:Oracle截取字符串和查找字符串 oracle自定义函数学习和连接运算符(||) oracle 截取字符(substr),检索字符位置(instr) case when then else ...

python字符串的截取,查找

1.字符串的截取 str = "123456" str[:3] = 123 str[1:3] = 23 str[0:-1] = 12345 里面的数字都是index索引,从第一个索 ...

python中字符串操作--截取,查找,替换

python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...

go语言学习--string、int、int64互相转换,字符串的截取,数组和字符串的转换

下面总结了go中常用的转换 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt ...

go语言字符串的连接和截取

字符串的连接: https://studygolang.com/articles/12281?fr=sidebar 字符串的截取: https://studygolang.com/articles/9 ...

C语言字符串操作总结大全(超详细)

本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

随机推荐

探索ASP.NET MVC框架之路由系统

引言 对于ASP.NET MVC的路由系统相信大家肯定不陌生.今天我们就深入ASP.NET的框架内部来看一下路由系统到底是怎么通过我们给出的地址(例如:/Home/Index)解析出Controlle ...

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十四)之漏掉的客服消息

前言 不知不觉已经十四篇了,其实已经没有什么可写了.但是突然发现layim中带的客服功能没有用到.于是乎,抽点时间完成吧.其实之前的工作已经把客服功能完成了一大半,剩下的我们稍微调整即可.今天的演示我 ...

.net程序集强名称签名实践

引用:  http://www.cnblogs.com/cpcpc/archive/2011/01/17/2123086.html 强名称是由程序集的标识加上公钥和数字签名组成的.其中,程序集的标识包 ...

Best Practices for Speeding Up Your Web Site

The Exceptional Performance team has identified a number of best practices for making web pages fast ...

数据库版本管理工具Flyway(4.0.3)---介绍(译文)

Flyway Evolve your Database Schema easily and reliably across all your instances 简单的.可靠的升级(发展)你的数据库模 ...

【托业】【新东方托业全真模拟】TEST05~06-----P5~6

credit A with B 把A归功于B present A with B 给A赠送B proofread thoroughly 彻底地校对:exclusively 专门地:独占地:apparen ...

python基本数据类型之字典

python基本数据类型之字典 python中的字典是以键(key)值(value)对的形式储存数据,基本形式如下: d = {'Bart': 95, 'Michael': 34, 'Lisa': 5 ...

[luogu3258][JLOI2014]松鼠的新家

题解 我们就在\([a_i,a_{i+1}]\)的路径上都\(+1\),然后单点查询就可以了. ac代码(吸了氧才过的QwQ) # include # de ...

【转】Mac OS X Terminal 101:终端使用初级教程

最近学习苹果认证的教程,看到 Command Line 一节有很多实用的知识,下面选取一部分翻译 + 笔记,整理成此文. 你可以整 ...

你可能感兴趣的:(c语言寻找子字符串拷贝)