最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言string.h頭文件中所有函數(shù)示例詳解

 更新時間:2024年11月29日 10:47:48   作者:伯恩bourne  
這篇文章詳細介紹了C語言標準庫中的字符串和內存操作函數(shù),以str開頭的字符串處理函數(shù)和以mem開頭的內存處理函數(shù),每種函數(shù)都有詳細的原型、功能描述和示例代碼,需要的朋友可以參考下

前言

頭文件<string.h>中有兩大類字符串函數(shù)。一類為str開頭的函數(shù),一類men開頭的函數(shù)。men開頭的函數(shù),效率會更高一些。

參數(shù)中 size_t 是一種無符號整數(shù)類型,確保不會出現(xiàn)負數(shù)。

一 . 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;
}

結果:

2. strncpy() 復制

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

功能:src指向的字符 復制到dest中,并返回dest,限制最大字符串長度 maxsize。當src中少于maxsize時,使用‘\0’填充。其中size_t是無符號整型,保證maxsize始終為正數(shù)。

返回: 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);
}

運行結果:

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);
}

運行:

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] ="hello,"; /*目標字符串必須聲明足夠的長度,足夠連接src字符串長度*/
  
   strncat(dest, src,3);
   printf("目標字符串:%s\n",dest);
   system("pause");
   return(0);
}

運行:

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);
}

運行結果:

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);
}

運行結果:

發(fā)現(xiàn)和strcmp()中的結果不一樣,是因為strncmp(str1, str2,5)中,只比較了前5個字符。前5個字符都是hello,所以相等。

7. strchr() 查找

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

功能:查找字符c在src中的第一次出現(xiàn)的位置

返回:  字符c在src中的第一次出現(xiàn)位置的指針

示例:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
   char * str  ="hello,world!" ;
  
   char * pos;
  
   pos= strchr(str, 'o');
   
   printf("\n 字符第一次出現(xiàn)的位置為第%d個(從0開始),內存地址為:0x%x\n", pos-str,pos );

   system("pause");
   return(0);
}

運行結果:

8. strrchr() 查找

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

功能:查找字符c在src中的最后一次出現(xiàn)的位置

返回:  字符c在src中的最后一次出現(xiàn)位置的指針

示例:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
   char * str  ="hello,world!" ;
   char * pos;

   pos= strrchr(str, 'o');
   printf("\n 字符最后一次出現(xiàn)的位置為第%d個(從0開始),內存地址為:0x%x\n", pos-str,pos );

   system("pause");
   return(0);
}

運行結果:

9. strcspn() 查找

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

功能:返回字符串 str1 中包含str2中字符的前綴的長度?;蛘呖梢岳斫鉃?strong>字符串 str1 中第一個在字符串 str2 中出現(xiàn)的字符下標 。直接看代碼和運行結果,看完就明白了。

示例:

#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中出現(xiàn)了,它的下標是2*/

   printf("\nstr1中找到第一個在str2中出現(xiàn)的字母,它的下標為:%d\n", len);

   system("pause");
   return(0);
}

運行結果:

10. strspn() 查找

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

功能:返回字符串 str1 中不包含str2中字符的前綴的長度。或者可以理解為 查找字符串 str1 中第一個沒有在字符串 str2 中出現(xiàn)的字符下標 。直接看代碼和運行結果,看完就明白了。這個容易和strcspn()函數(shù)搞反,得格外注意。

示例:

#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(wèi)在是第一個沒有在dewor中出現(xiàn),它的下標是3*/

   printf("\nstr1中找到第一個沒有在str2中出現(xiàn)的字母,它的下標為:%d\n", len);

   system("pause");
   return(0);
}

運行結果:

11. strpbrk() 查找

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

功能:查找str2的任意字符在str1中第一次出現(xiàn)的位置,并返回指向這個位置的指針

返回:  字符指針

#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中出現(xiàn),將返回r的位置,
							 雖然glar中的l在world中也出現(xiàn),但是它不是第一個在world中出現(xiàn)的*/

   printf("\nstr2的字符在str1中第一個出現(xiàn)的字母是%c,它在str1的下標為%d\n", *pos,pos-str1);

   system("pause");
   return(0);
}

運行結果:

12. strstr() 查找

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

功能:查找str2在在str1中第一次出現(xiàn)的位置,并返回指向這個位置的指針

返回:  字符指針

#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\"中第一個出現(xiàn)的位置下標為%d\n", pos-str1);

   system("pause");
   return(0);
}

運行結果:

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);
}

運行結果:

14. strerror() 錯誤碼

原型char * strerror(int n)

功能:傳入不同的錯誤碼時 返回對應的錯誤字符串。這個函數(shù)很有意思哦。

示例:

#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);
}

 運行結果:

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);
}

運行結果:

二. mem開頭

men開頭的函數(shù),主要目的是提供一個高效的函數(shù)接口。

1. memcpy() 復制

原型void *  memcpy( char * 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);
}

運行結果:

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);
}

運行結果:

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);
}

運行結果:

4. memset() 替換

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

功能:此函數(shù)初始化函數(shù),將某一塊內存(參數(shù)ptr)中的內容全部設置為指定的值 value

         將ptr中的前n個數(shù)據(jù)替換為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);
}

運行結果:

示例2:

結構變量初始化,將結構中的變量用value初始化。

#include <stdio.h>
#include <stdlib.h>

typedef struct manager {
	int iArr [12];
	float fArr [5];
	char ch; //整型int賦值給char,只要數(shù)組在-128到127之間就沒問題
} Manager;

//打印manager中的值
 void  printManager(Manager manager)
{
	int i=0;
	puts("iArr值:");
	for(; i<12; i++)   //打印數(shù)組iArr的所有元素
		printf("第%d個: %d\n",i+1, manager.iArr[i]);
	puts("\nmanager->fArr值:");
	for(i=0; i<5; i++) //打印數(shù)組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;

}

返回結果:

5. memmove() 替換

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

功能:將s中的前n個字符替換為c,并返回s,功能和memcpy一樣,但是可以解決linux下memcpy因為地址重疊而造成替換失敗的問題。算是對memcpy的一個升級。在windows系統(tǒng)中沒有這個問題。

示例:

#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頭文件中所有函數(shù)示例詳解的文章就介紹到這了,更多相關c語言string.h頭文件函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++自旋鎖的實現(xiàn)示例

    C++自旋鎖的實現(xiàn)示例

    自旋鎖是一種非阻塞鎖,線程在獲取鎖失敗時會忙等待而不是掛起,它適用于鎖持有時間極短的場景,可以在用戶態(tài)運行,避免系統(tǒng)調用開銷,下面就來詳細的介紹一下C++自旋鎖的使用,感興趣的可以了解一下
    2026-02-02
  • C++實現(xiàn)數(shù)據(jù)結構的順序表詳解

    C++實現(xiàn)數(shù)據(jù)結構的順序表詳解

    這篇文章主要為大家詳細介紹了C++實現(xiàn)動態(tài)順序表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++初階教程之類和對象

    C++初階教程之類和對象

    C++是面向對象編程的,這也是C++與C語言的最大區(qū)別,而類和對象就是C++面向對象的基礎,下面這篇文章主要給大家介紹了關于C++初階教程之類和對象的相關資料,需要的朋友可以參考下
    2022-02-02
  • C語言實現(xiàn)圖的最短路徑Floyd算法

    C語言實現(xiàn)圖的最短路徑Floyd算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖的最短路徑Floyd算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 從頭學習C語言之switch語句和分支嵌套

    從頭學習C語言之switch語句和分支嵌套

    這篇文章主要為大家詳細介紹了C語言之switch語句和分支嵌套,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++在同一對象中存儲左值或右值的方法

    C++在同一對象中存儲左值或右值的方法

    C++ 代碼似乎經(jīng)常出現(xiàn)一個問題:如果該值可以來自左值或右值,則對象如何跟蹤該值?即如果保留該值作為引用,那么就無法綁定到臨時對象,本文給大家介紹了C++在同一對象中存儲左值或右值的幾種方法,需要的朋友可以參考下
    2025-03-03
  • C++單例模式的實例詳解

    C++單例模式的實例詳解

    這篇文章主要介紹了C++單例模式的實例詳解的相關資料,希望通過本文能幫助到大家,讓大家掌握這部分內容,需要的朋友可以參考下
    2017-10-10
  • C++封裝IATHOOK類實例

    C++封裝IATHOOK類實例

    這篇文章主要介紹了C++封裝IATHOOK類的實現(xiàn)方法,對IAT的HOOK實例進行了封裝,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • 《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的!

    《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的!

    這篇文章主要介紹了《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的,喜歡戰(zhàn)狼和編程的同學可以了解下。
    2017-11-11
  • C++實現(xiàn)圖書管理系統(tǒng)課程設計

    C++實現(xiàn)圖書管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C++實現(xiàn)圖書管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

循化| 磐安县| 嘉义县| 定西市| 南宫市| 开封市| 鄂托克前旗| 湖南省| 建湖县| 双江| 北京市| 丹凤县| 女性| 瑞丽市| 桑植县| 辽中县| 张家口市| 武平县| 休宁县| 介休市| 新昌县| 大安市| 富宁县| 上犹县| 新泰市| 息烽县| 图木舒克市| 新河县| 茶陵县| 合山市| 辽中县| 云梦县| 定陶县| 七台河市| 张家港市| 金乡县| 吉林省| 礼泉县| 虞城县| 沧州市| 望奎县|