福建城鄉(xiāng)建設(shè)部網(wǎng)站首頁(yè)國(guó)內(nèi)哪個(gè)搜索引擎最好用
本節(jié)重點(diǎn)內(nèi)容:
- 深入理解strtok函數(shù)的使用
- 深入理解strerror函數(shù)的使用
?strtok
- ?Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part ofstr1
- sep參數(shù)是個(gè)字符串,定義了用作分隔符的字符集合。
- 第一個(gè)參數(shù)指定一個(gè)字符串,它包含了0個(gè)或者多個(gè)由sep字符串中一個(gè)或者多個(gè)分隔符分割的標(biāo)記。
- strtok函數(shù)找到str中的下一個(gè)標(biāo)記,并將其用 \0 結(jié)尾,返回一個(gè)指向這個(gè)標(biāo)記的指針。(注:
strtok函數(shù)會(huì)改變被操作的字符串,所以在使用strtok函數(shù)切分的字符串一般都是臨時(shí)拷貝的內(nèi)容并且可修改。) - strtok函數(shù)的第一個(gè)參數(shù)不為 NULL ,函數(shù)將找到str中第一個(gè)標(biāo)記,strtok函數(shù)將保存它在字符串中的位置。
- strtok函數(shù)的第一個(gè)參數(shù)為 NULL ,函數(shù)將在同一個(gè)字符串中被保存的位置開始,查找下一個(gè)標(biāo)記。
- 如果字符串中不存在更多的標(biāo)記,則返回 NULL 指針。
strtok函數(shù)的基本用法:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>int main()
{char arr[] = "1582834943@qq.com";const char* p = "@.";char buf[30] = { 0 };char* str = NULL;strcpy(buf, arr);//將數(shù)據(jù)拷貝一份,處理arr數(shù)組的內(nèi)容for (str = strtok(buf, p); str != NULL; str = strtok(NULL, p)){printf("%s\n", str);}return 0;
}
運(yùn)行結(jié)果如下:
?strerror
- ?返回錯(cuò)誤碼,所對(duì)應(yīng)的錯(cuò)誤信息。
strerror函數(shù)的基本使用:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>int main()
{char* p = strerror(0);printf("%s\n", p);char* p1 = strerror(1);printf("%s\n", p1);char* p2 = strerror(2);printf("%s\n", p2);return 0;
}
運(yùn)行結(jié)果如下:
通過以上的例子,我們可以將 strerror 函數(shù)看作將錯(cuò)誤碼(0,1,2)翻譯為錯(cuò)誤信息。
上例的代碼只是為了方便演示功能才舉出的例子,事實(shí)上C語(yǔ)言的庫(kù)函數(shù)在調(diào)用失敗的時(shí)候,會(huì)將一個(gè)錯(cuò)誤碼存放在一個(gè)叫 errno 的變量中,當(dāng)我們想知道在調(diào)用庫(kù)函數(shù)是發(fā)生了什么錯(cuò)誤信息,就可以將 errno 中的錯(cuò)誤碼翻譯成錯(cuò)誤信息。
演示打開讀取關(guān)閉文件的過程,代碼示例如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<errno.h>int main()
{//打開文件//打開文件的時(shí)候,若打開的方式為“r”// 若文件存在則打開,若文件不存在則打開失敗//若打開文件失敗,會(huì)返回NULLFILE* pf = fopen("test.txt", "r"); //意思是 以讀的形式打開文件test.txtif (pf == NULL){printf("打開文件失敗,原因是:%s\n", strerror(errno));return 1;}//讀寫文件//……//關(guān)閉文件fclose(pf);pf = NULL;return 0;
}
由于我的電腦中不存在這個(gè)文件,因此運(yùn)行結(jié)果如下:
補(bǔ)充:perror
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<errno.h>int main()
{FILE* pf = fopen("test.txt", "r"); if (pf == NULL){perror("打開文件失敗");return 1;}fclose(pf);pf = NULL;return 0;
}
運(yùn)行結(jié)果如下:
感謝大家能夠看完這篇博客,創(chuàng)作時(shí)長(zhǎng),小伙伴們覺得我的博客對(duì)你有幫助,不妨留下你的點(diǎn)贊的收藏,關(guān)注我,帶你了解不一樣的C語(yǔ)言。