C语言string.h库中的常用函数

首先有几点说明:

源字符串首地址:src

源字符串表示的是:从地址src开始第一个不是NULL的字符开始到NULL结束。('\0'就是NULL)

举例:

char s1[100]={,'\0','\0','a','b','c','d','\0','e','f','g'};

char  dest[100]={'\0'}

此时如果执行strcpy(dest,s1)函数,则实际上只将abc复制给了dest,也就是说dest="abc" ,

而不是期望的dest="  abcd efg"

关于内存区域重叠的问题可以参见

博客http://www.cnblogs.com/heyonggang/p/3196757.html

<1>

【函数原型】char* strstr( char *str, char * substr );

【用处】strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
【参数说明】str为要检索的字符串,substr为要检索的子串。
【返回值】返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
【函数示例】strstr()函数的使用。

<span style="font-size:18px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
	char s[100] = "hello World!";
	char t[100] = "llo Wo";
	char t2[100] = "123";
	char* result=strstr(s, t);
	printf("返回的地址为:0x%x\n", result);
	printf("%s\n", result);
	char* result2 = strstr(s, t2);
	if (result2 == NULL){
		printf("返回空指针\n");
	}
	system("pause");
	return 0;
}</span>

<2>

【函数原型】char* strcpy(char* dest, const char *src);
【用处】把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

【参数说明】src为被拷贝的源字符串首地址,dest为目标地址。

【返回值】返回指向dest的指针

【注意】:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

【函数示例】:strcpy的使用

<3>

【函数原型】char* strncpy(char*dest,char*src,size_tn);

【用处】复制字符串src中的内容到字符串dest中,复制多少由size_tn的值决定

【返回值】返回指向dest的指针

【注意】

(1)src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+'\0'。

(2)如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。原型

(3)如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。

<4>

【函数原型】char *strcat(char *dest,char *src);

【用处】把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。

【返回值】返回指向dest的指针。

【注意】 src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

<5>

非常有用的字符串处理函数

原型】:void * memmove( void* dest, const void* src, size_t count );

【用处】memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。

【返回值】指向dest的指针

<6>

【函数原型】void *memset(void *s, int ch, size_t n);

【用处】将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。作用是在一段内存块中填充某个给定的值,常用于初始化操作,它是对较大的结构体或数组进行清零操作的一种最快方法。

【注意】该函数是逐字节填充的,因此一般只能用于处理字符串。

注意:指针和数组有以下区别

char  s[100]="asdasdasdasdas";

char  *a=s;

而,sizeof(a)=4,sizeof(s)=4*100;

<7>

【函数原型】: char *strset(char *str, char c);
【功 能】: 将一个串中的所有字符都设为指定字符



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值