首先有几点说明:
源字符串首地址: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);
【功 能】: 将一个串中的所有字符都设为指定字符