字符串裁剪 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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值