亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c語言字符串函數(shù)strstr,strtok,strerror的使用和實現(xiàn)

 更新時間:2024年10月23日 09:29:49   作者:王哈哈嘻嘻嚕嚕  
C語言中的字符串處理函數(shù)如strtok、strstr和strerror對于字符串的處理有著重要的作用,strtok函數(shù)用于分割字符串,它通過sep參數(shù)指定的分隔符來分割str參數(shù)指定的字符串,并返回分割后的每個子字符串

1,strtok函數(shù)的使用和模擬實現(xiàn)

char * strtok(char * str,const char * sep)(分隔字符串的作用)

會有static修飾變量,有記憶功能,會保存字符串的位置,下次找再繼續(xù)找。

1)sep參數(shù)指向一個字符串,它包含了0個或者多個由sep字符中一個或則多個分隔符分割的標記。

2)第一個參數(shù)指定一個字符串,并將其用\0結(jié)尾,返回一個指向這個標記的指針。

3)strtok函數(shù)的第一個參數(shù)不為NULL,函數(shù)將找到str中第一個標記,strtok函數(shù)將保存它在字符串中的位置。

4)strtok函數(shù)的第一個參數(shù)為NULL,函數(shù)將在同一個字符串中被保存的位置開始,查找下一個標記。

5)如果字符串中不存在更多的標記,則返回NULL指針。

strtok函數(shù)和strcpy的使用

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[]="wangyiting@very.beautiful";
	char arr2[]={0};
	strcpy(arr2,arr1);//將arr1拷貝到arr2里面 
	char *sep="@.";//設置分隔符 
	char *ret=NULL;//初始化
	//for循環(huán)對字符串分隔 
	for(ret=strtok(arr2,sep);ret!=NULL;ret=strtok(NULL,sep))
	{
		printf("%s\n",ret);//換行打印出分隔開后的字符串 
	}
	return 0;
 } 

2,strstr的使用和模擬實現(xiàn)

const char * strstr (const char * str1,const char * str2);

功能:在str1中找到了str2這個字符串,第一次出現(xiàn)的位置如果找不到了,就返回第一次出現(xiàn)的起始地址后面的字符也會接著運行出來,如果找不到,就返回NULL。

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[]="abcdefg";
	char arr2[]="abc";//初始化 
	char *ret=strstr(arr1,arr2);//調(diào)用函數(shù) 
	if(ret==NULL)//進行判斷 
	{
		printf("不存在\n"); 
	}
	else
	{
		printf("%s\n",ret);//打印出第一個所在的起始位置 
	}
	return 0;
 } 

strstr的模擬實現(xiàn)

#include<stdio.h>
#include<assert.h>
const char * my_strstr(const char* str1,const char* str2)
{
	assert(str1&&str2);
	const char* s1=NULL;
	const char* s2=NULL;
	const char* cur=str1;
	if(*str2=='\0')
	{
		return str1;//如果str2是一個空字符串,返回str1 
	}
	while(*cur!='\0')
	{
		s1=cur;
		s2=str2;
		while(*s1==*s2&&s1&&s2)
		{
			s1++;//判斷的字符相同則s1,s2,都進行++ 
			s2++;
		}
		if(*s2=='\0')//若是s2為\0則返回cur 
		{
			return cur;
		}
		cur++;
	}
 } 
int main()
{
	char arr1[]="abcdefg";
	char arr2[]="cde";//初始化 
	const char* ret=my_strstr(arr1,arr2);
	if(ret==NULL)//進行判斷 
	{
		printf("不存在\n");
	}
	else
	{
		printf("%s\n",ret);//打印出第一個所出現(xiàn)的起始位置 
	}
	return 0;
}

3,strerror的使用和模擬實現(xiàn)

sterror函數(shù)可以把參數(shù)部分錯誤碼對應的錯誤信息的字符串地址返回來。

一般是放在errno.h這個頭文件中說明的,c語言程序啟動的時候就會使用一個全局變量error來記錄程序的當前錯誤碼,只不過程序啟動的時候errno是0,表示沒有錯誤,當我們使用標準庫中的函數(shù)發(fā)生了某種錯誤,就將會對應的錯誤碼,存放在erron中,strerror函數(shù)就可以將錯誤對應的錯誤信息字符串的地址返回。

#include<stdio.h>
#include<string.h>
int main()
{
	int i=0;
	for(i=0;i<10;i++)
	{
		pritnf("%s\n",strerror(i));
	 } 
	return 0;
 } 

#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
	//打開文件
	//用r方式打開,表示'讀‘以讀文件的形式 
	//打開文件,如果文件不存在,就打開失敗
	FILE*pf=fopen("data.txt","r");
	if(pf==NULL)
	{
		printf("打開文件失敗\n");
	 } 
	 else
	 {
	 	printf("打開文件成功\n");
	 	fclose(pf);
	 	pf=NULL;
	 }
	return 0;
}

有一個與之相似用法的函數(shù)

4,perror

sterror--將錯誤碼對應的錯誤信息的字符串的起始地址返回

perror--將erron中錯誤對用的錯誤信息打印出來

perror打印方式:

函數(shù)先打印str指向的字符串,打?。?,在打印一個空格,在打印錯誤碼的錯誤信息。

例如:

#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
	//打開文件
	//用r方式打開,表示'讀‘以讀文件的形式 
	//打開文件,如果文件不存在,就打開失敗
	FILE*pf=fopen("data.txt","r");
	if(pf==NULL)
	{
		printf("打開文件失敗,原因是:%s\n",strerror(erron));
		perror("打開文件失敗,原因是"); 
	 } 
	 else
	 {
	 	printf("打開文件成功\n");
	 	fclose(pf);
	 	pf=NULL;
	 }
	return 0;
}

就自動補齊冒號和空格,還有錯誤的原因

//perror也相當于printf+sterror。

到此這篇關(guān)于c語言字符串函數(shù)strstr,strtok,strerror的文章就介紹到這了,更多相關(guān)c語言 strstr,strtok,strerror內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼

    C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼

    本文主要介紹了C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼,包括memcpy、memmove、memset和memcmp的使用,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • Qt使用QWT繪制柱狀圖詳解

    Qt使用QWT繪制柱狀圖詳解

    QT中提供了一個叫做QWT的庫。QWT,全稱是Qt?Widgets?for?Technical?Applications,是一個基于LGPL版權(quán)協(xié)議的開源項目,可生成各種統(tǒng)計圖。本文將通過它繪制柱狀圖,需要的可以參考一下
    2022-01-01
  • C語言實現(xiàn)簡易網(wǎng)絡聊天室

    C語言實現(xiàn)簡易網(wǎng)絡聊天室

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易網(wǎng)絡聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言之實現(xiàn)棧的基礎創(chuàng)建

    C語言之實現(xiàn)棧的基礎創(chuàng)建

    這篇文章主要介紹了C語言之實現(xiàn)棧的基礎創(chuàng)建,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt中網(wǎng)絡編程的實現(xiàn)

    Qt中網(wǎng)絡編程的實現(xiàn)

    本文主要介紹了Qt中網(wǎng)絡編程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • C語言中進行函數(shù)指針回調(diào)的實現(xiàn)步驟

    C語言中進行函數(shù)指針回調(diào)的實現(xiàn)步驟

    在 C 語言中,函數(shù)指針的回調(diào)是一種強大的編程技術(shù),它允許我們在特定的事件發(fā)生或特定的條件滿足時,調(diào)用由用戶定義的函數(shù),這種機制增加了程序的靈活性和可擴展性,使得代碼更具通用性和可重用性,本文給大家介紹了C語言中進行函數(shù)指針回調(diào)的實現(xiàn)步驟,需要的朋友可以參考下
    2024-07-07
  • C++約瑟夫環(huán)問題詳解

    C++約瑟夫環(huán)問題詳解

    大家好,本篇文章主要講的是C++約瑟夫環(huán)問題詳解 ,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    這篇文章主要為大家介紹了C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • C語言使用矩形法求定積分的通用函數(shù)

    C語言使用矩形法求定積分的通用函數(shù)

    這篇文章主要為大家詳細介紹了C語言使用矩形法求定積分的通用函數(shù),分別求解sinx, cosx,e^x,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼

    QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼

    本文主要介紹了QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07

最新評論