开发者

c语言string.h头文件中所有函数示例详解

目录
  • 前言
  • 一 . str开头
    • 1. strcpy() 复制
    • 2. strncpy() 复制
    • 3. strcat() 合并
    • 4. strncat() 合并
    • 5. strcmp() 比较
    • 6. strncmp() 比较
    • 7. strchr() 查找
    • 8. strrchr() 查找
    • 9. strcspn() 查找
    • 10. strspn() 查找
    • 11. strpbrk() 查找
    • 12. strstr编程客栈() 查找
    • 13. strlen() 计算长度
    • 14. strerror() 错误码
    • 15. strtok() 截取
  • 二. mem开头
    • 1. memcpy() 复制
    • 2. memcmp() 比较
    • 3. memchr() 查找
    • 4. memset() 替换
    • 5. memmove() 替换
  • 总结

    前言

    头文件<string.h>中有两大类字符串函数。一类为str开头的函数,一类men开头的函数。men开头的函数,效率会更高一些。

    参数中 size_t 是一种无符号整数类型,确保不会出现负数。

    一 . str开头

    1. strcpy() 复制

    原型:char * strcpy(char *dest, char *src);

    功能:src指向的字符 复制到dest中

    返回:dest

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char desn[10];	
    	char* source="hello world!";
    	strcpy(desn,source);
    	printf("源字符串  :%s\n",source);
    	printf("目标字符串:%s\n",desn);
    	return 0;
    }

    结果:

    c语言string.h头文件中所有函数示例详解

    2. strncpy() 复制

    原型:char * strncpy(char *dest, char *src, size_t  maxsize)

    功能:src指向的字符 复制到dest中,并返回dest,限制最大字符串长度 maxsize。当src中少于maxsize时,使用‘\0’填充。其中size_t是无符号整型,保证maxsize始终为正数。

    返回: dest

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * src="hello,world!";
       char dest[20];
       strncpy(dest, src, 20);
      
       printf("源字符串  :%s\n",src);
       printf("目标字符串:%s\n",dest);
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    3. strcat() 合并

    原型:char *strcat(char *dest, const char *src)

    功能:将字符串src 连接到dest的尾部。

    返回: dest

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * src="world" ;
       char  dest[50] ="hello,"; /*目标字符串必须声明足够的长度,足够连接src字符串长度*/
      
       strcat(dest, src);
       printf("目标字符串:%s\n",dest);
       system("pause");
       return(0);
    }

    运行:

    c语言string.h头文件中所有函数示例详解

    4. strncat() 合并

    原型:char *strcat(char *dest, const char *src,size_t maxsize)

    功能:将字符串src 最多前maxsize个字符 连接到dest的尾部。src中必须有字符串结束符'\0'

    返回: dest

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * src="world" ;
       char  dest[50] ="hel编程lo,"; /*目标字符串必须声明足够的长度,足够连接src字符串长度*/
      
       strncat(dest, src,3);
       printf("目标字符串:%s\n",dest);
       system("pause");
       return(0);
    }

    运行:

    c语言string.h头文件中所有函数示例详解

    5. strcmp() 比较

    原型:int strcmp(const char *str1, const char *str2)

    功能:比较字符串str1和str2

    返回:  当str1<str2,返回值小于0

              当str1=str2,返回值等于0

              当str1>str2,返回值大于0

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="hello,world!" ;
       char * str2  ="hello,human!"; 
      
       int res= strcmp(str1, str2);
       if(res<0)
    	 printf("str1小于str2");
       else if(res==0)
    	 printf("str1等于str2");
       else
    	 printf("str1大于str2");
        printf("\n");
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    6. strncmp() 比较

    原型:int strncmp(const char *str1, const char *str2,size_t maxsize)

    功能:字符串str1中至多maxsize个字符与字符串str2比较

    返回:  当str1<str2,返回值小于0

              当str1=str2,返回值等于0

              当str1>str2,返回值大于0

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="hello,world!" ;
       char * str2  ="hello,human!"; 
      
       int res= strncmp(str1, str2,5);
       if(res<0)
    	 printf("str1小于str2\n");
       else if(res==0)
    	 printf("str1等于str2\n");
       else
    	 printf("str1大于str2\n");
       printf("\n");
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    发现和strcmp()中的结果不一样,是因为strncmp(str1, str2,5)中,只比较了前5个字符。前5个字符都是hello,所以相等。

    7. strchr() 查找

    原型:char *strchr(const char * src, int c)

    功能:查找字符c在src中的第一次出现的位置

    返回:  字符c在src中的第一次出现位置的指针

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str  ="hello,world!" ;
      
       char * pos;
      
       pos= strchr(str, 'o');
       
       printf("\n 字符第一次出现的位置为第%d个(从0开始),内存地址为:0x%x\n", pos-str,pos );
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    8. strrchr() 查找

    原型:char * strrchr(const char * src, int c)

    功能:查找字符c在src中的最后一次出现的位置

    返回:  字符c在src中的最后一次出现位置的指针

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str  ="hello,world!" ;
       char * pos;
    
       pos= strrchr(str, 'o');
       printf("\n 字符最后一次出现的位置为第%d个(从0开始),内存地址为:0x%x\n", pos-str,pos );
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    9. strcspn() 查找

    原型:size_t strcspn(const char * str1, const char * str2)

    功能:返回字符串 str1 中包含str2中字符的前缀的长度。或者可以理解为字符串 str1 中第一个在字符串 str2 中出现的字符下标 。直接看代码和运行结果,看完就明白了。

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="world!" ;
       char * str2="jbgar"; 
    
       int len;
       len = strcspn(str1, str2);/*world中r在ar中出现了,它的下标是2*/
    
       printf("\nstr1中找到第一个在str2中出现的字母,它的下标为:%d\n", len);
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    10. strspn() 查找

    原型:size_t strspn(const char * str1, const char * str2)

    功能:返回字符串 str1 中不包含str2中字符的前缀的长度。或者可以理解为 查找字符串 str1 中第一个没有在字符串 str2 中出现的字符下标 。直接看代码和运行结果,看完就明白了。这个容易和strcspn()函数搞反,得格外注意。

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="world!" ;
       char * str2="dewor"; 
    
       int len;
       len = strspn(str1, str2);/*world中l在是第一个没有在dewor中出现,它的下标是3*/
    
       printf("\nstr1中找到第一个没有在str2中出现的字母,它的下标为:%d\n", len);
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    11. strpbrk() 查找

    原型char  *  strpbrk(const char * str1, const char * str2)

    功能:查找str2的任意字符在str1中第一次出现的位置,并返回指向这个位置的指针

    返回:  字符指针

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="world!" ;
       char * str2="glar"; 
       char * pos;
    
       pos = strpbrk(str1, str2);/*glar中的r是第一个在world中出现,将返回r的位置,
    							 虽然glar中的l在world中也出现,但是它不是第一个在world中出现的*/
    
       printf("\nstr2的字符在str1中第一个出现的字母是%c,它在str1的下标为%d\n", *pos,pos-str1);
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    12. strstr() 查找

    原型char  *  strstr(const char * str1, const char * str2)

    功能:查找str2在在str1中第一次出现的位置,并返回指向这个位置的指针

    返回:  字符指针

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="wohello,world!" ;
       char * str2="wor"; 
       char * pos;
    
       pos = strstr(str1, str2);
    
       printf("\n\"wor\"在\"wohello,world\"中第一个出现的位置下标为%d\n", pos-str1);
    
       system("pause");
       return(0);
    }
    

    运行结果:

    c语言string.h头文件中所有函数示例详解

    13. strlen() 计算长度

    原型size_t  strstr(const char * str)

    功能:返回str的长度

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * str1  ="hello,world!" ;
      
       int len = strlen(str1);
    
       printf("\n\str1的长度:%d\n", len);
    
       system("pause");
       return(0);
    }
    

    运行结果:

    c语言string.h头文件中所有函数示例详解

    14. strerror() 错误码

    原型char * strerror(int n)

    功能:传入不同的错误码时 返回对应的错误字符串。这个函数很有意思哦。

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
    	
       
       printf("\n \040 0 :%s \n", strerror(0)); /* \040是空格的转义字符 */
       printf("\n \040 1 :%s \n", strerror(1));
       printf("\n \040 2 :%s \n", strerror(2));
       printf("\n \040 3 :%s \n", strerror(3));
       printf("\n \040 4 :%s \n", strerror(4));
       printf("\n \040 5 :%s \n", strerror(5));
       printf("\n \040 6 :%s \n", strerror(6));
       printf("\n \040 -1 :%s \n", strerror(-1));
       system("pause");
    
       return(0);
    }
    

     运行结果:

    c语言string.h头文件中所有函数示例详解

    15. strtok() 截取

    原型char * strtok(char* str1,const char* str2)

    功能:使用str2,对str1字符串进行分隔截取,返回截取的部分字符串

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main()
    {
       char  str [] ="hello@world@coffee@tea!" ;
       char * c="@" ;
     
      
       printf("\n第一个:%s\n", strtok(str,c));
       printf("\n第二个:%s\n", strtok(NULL,c));
       printf("\n第三个:%s\n", strtok(NULL,c));
       printf("\n第四个:%s\n", strtok(NULL,c));
    
       printf("\n再重新开始:%s\n", strtok(str,c));
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    二. mem开头

    men开头的函数,主要目的是提供一个高效的函数接口。

    1. memcpy() 复制

    原型void *  memcpy( char http://www.devze.com* str1, const char * str2 ,int n)

    功能:将字符串str2中的n个字符拷贝到str1中;

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
    	
       char  str1[13]  ;
       char * str2="hello,world!" ;
      
       memcpy(str1,str2,13);
    	
       printf("\n\str1中字符为:%s\n", str1);
    
       system("pause");
       return(0);
    }
    

    运行结果:

    c语言string.h头文件中所有函数示例详解

    2. memcmp() 比较

    原型int  memcmp(const char * str1, const char * str2 ,int n)

    功能:str1中的前n个字符和str2中的值进行比较。

    返回:

            当str1<str2时,返回值<0

            当str1=bstr2时,返回值=0

            当str1>str2时,返回值>0

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
    	
       char * str1="hello,world!" ;
       char * str2编程客栈="helle" ;
       char * resstr;
       int res=memcmp(str1,str2,5);
       if(res<0)
    	  resstr="小于";
       else if(res=0)
    	   resstr="等于";
       else 
    	   resstr="大于";
       printf("\n\str1的前5个字符%sstr2的字符\n", resstr);
    
       system("pause");
       return(0);
    }
    

    运行结果:

    c语言string.h头文件中所有函数示例详解

    3. memchr() 查找

    原型char * memchr(const char * str, char  c ,int n)

    功能:在str中前n个字符中查找 c的位置,返回找到的位置的指针,如果找不到返回NULL

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main()
    {
       char * str="hello,world!" ;
       char  c=',' ;
       char * pos;
       pos=(char*) memchr(str,c,10);
      
       printf("\n\",\"在\"hello,world\"的下标位置为:%d\n", pos-str);
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    4. memset() 替换

    原型void * memset( void * ptr, int  value ,size_t n)

    功能:此函数初始化函数,将某一块内存(参数ptr)中的内容全部设置为指定的值 value

             将ptr中的前n个数据替换为value,并返回ptr,

    示例1:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main()
    {
       char  str []="hello,world!" ;
       char  c='w' ;
     
       memset(str,c,5);
       printf("\n\str中字符串:%s\n", str);
    
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    示例2:

    结构变量初始化,将结构中的变量用value初始化。

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct manager {
    	int iArr [12];
    	float fArr [5];
    	char ch; //整型int赋值给char,只要数组在-128到127之间就没问题
    } Manager;
    
    //打印manager中的值
     void  printManager(Manager manager)
    {
    	int i=0;
    	puts("iArr值:");
    	for(; i<12; i++)   //打印数组iArr的所有元素
    		printf("第%d个: %d\n",i+1, manager.iArr[i]);
    	puts("\nmanager->fArr值:");
    	for(i=0; i<5; i++) //打印数组fArr的所有元素
    		printf("第%d个: %f\n",i+1, manager.fArr[i]);
    	puts("\nmanager->ch值:");
    	printf("%c\n", manager.ch);
    }
    
    void memsetTest()
    {
    	Manager  manager ;
    		
    	printf("使用65初始化\n");
    	memset(&manager,65,sizeof(manager));
    	printManager(manager);
    
    	printf("\n使用0初始化\n");
    	memset(&manager,0,sizeof(manager));
    	printManager(manager);
    
    }
    
    int main()
    {
    
        memsetTest();
    	getchar();
    	return 0;
    
    }
    

    返回结果:

    c语言string.h头文件中所有函数示例详解

    5. memmove() 替换

    原型void *  memmove( char * str1, const char * str2 ,int n)

    功能:将s中的前n个字符替换为c,并返javascript回s,功能和memcpy一样,但是可以解决linux下memcpy因为地址重叠而造成替换失败的问题。算是对memcpy的一个升级。在Windows系统中没有这个问题。

    示例:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
       char * src="hello,world!";
       char dest[20];
       memmove(dest, src, 20);
      
       printf("源字符串  :%s\n",src);
       printf("目标字符串:%s\n",dest);
       system("pause");
       return(0);
    }

    运行结果:

    c语言string.h头文件中所有函数示例详解

    总结

    到此这篇关于C语言string.h头文件中所有函数示例详解的文章就介绍到这了,更多相关c语言string.h头文件函数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜