国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語(yǔ)言第二十六彈---字符串函數(shù)(下)

這篇具有很好參考價(jià)值的文章主要介紹了C語(yǔ)言第二十六彈---字符串函數(shù)(下)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

C語(yǔ)言第二十六彈---字符串函數(shù)(下),C語(yǔ)言詳解,c語(yǔ)言,開發(fā)語(yǔ)言,算法

?個(gè)人主頁(yè):?熬夜學(xué)編程的小林

??系列專欄:?【C語(yǔ)言詳解】?【數(shù)據(jù)結(jié)構(gòu)詳解】

目錄

1、strncat 函數(shù)的使用

2、strncmp 函數(shù)的使用

3、strstr 函數(shù)的使用和模擬實(shí)現(xiàn)

4、strtok 函數(shù)的使用

5、strerror 函數(shù)的使用

6、perror 函數(shù)的使用

總結(jié)


1、strncat 函數(shù)的使用

char * strncat ( char * destination, const char * source, size_t num );
? Appends the first num characters of source to destination, plus a terminating null-character.
(將source指向字符串的前num個(gè)字符追加到destination指向的字符串末尾,再追加?個(gè) \0 字符)。
? If the length of the C string in source is less than num, only the content up to the terminating null-character is copied.(如果source 指向的字符串的長(zhǎng)度小于num的時(shí)候,只會(huì)將字符串中到 \0 的內(nèi)容追加到destination指向的字符串末尾)。
/* strncat example */
#include <stdio.h>
#include <string.h>
int main ()
{
 char str1[20];
 char str2[20];
 strcpy (str1,"To be ");//將"To be "拷貝到str1
 strcpy (str2,"or not to be");//將"or not to be"拷貝到str2
 strncat (str1, str2, 6);//將str2前面6個(gè)字符接到str1末尾
 printf("%s\n", str1);//打印str1
 return 0;
}

C語(yǔ)言第二十六彈---字符串函數(shù)(下),C語(yǔ)言詳解,c語(yǔ)言,開發(fā)語(yǔ)言,算法

2、strncmp 函數(shù)的使用

int strncmp ( const char * str1, const char * str2, size_t num );
比較str1和str2的前num個(gè)字符,如果相等就繼續(xù)往后比較,最多比較num個(gè)字母,如果提前發(fā)現(xiàn)不?樣,就提前結(jié)束,大的字符所在的字符串大于另外?個(gè)。如果num個(gè)字符都相等,就是相等返回0.
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[20];
	char str2[20];
	strcpy(str1, "abcdef");//將"abcdef"拷貝到str1
	strcpy(str2, "abc");//將"abc"拷貝到str2
	int ret=strncmp(str1, str2, 4);//將返回值給賦值給ret
	if (ret > 0)
		printf("str1 > str2\n");
	else if (ret < 0)
		printf("str1 < str2\n");
	else
		printf("str1 == str2\n");
	return 0;
}
C語(yǔ)言第二十六彈---字符串函數(shù)(下),C語(yǔ)言詳解,c語(yǔ)言,開發(fā)語(yǔ)言,算法

3、strstr 函數(shù)的使用和模擬實(shí)現(xiàn)

char * strstr ( const char * str1, const char * str2);
Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1.
(函數(shù)返回字符串str2在字符串str1中第?次出現(xiàn)的位置)。
The matching process does not include the terminating null-characters, but it stops there.(字符串的比較匹配不包含 \0 字符,以 \0 作為結(jié)束標(biāo)志)。
/* strstr example */
#include <stdio.h>
#include <string.h>
int main ()
{
 char str[] ="This is a simple string";
 char * pch;
 pch = strstr (str,"simple");//找到與simple相等的首地址賦值給pch
 strncpy (pch,"sample",6);//將sample前6個(gè)字符拷貝到pch 即修改str中的simple
 printf("%s\n", str);//打印str
 return 0;
}
C語(yǔ)言第二十六彈---字符串函數(shù)(下),C語(yǔ)言詳解,c語(yǔ)言,開發(fā)語(yǔ)言,算法
strstr的模擬實(shí)現(xiàn):
char * strstr (const char * str1, const char * str2)
{
 char *cp = (char *) str1;//str1為const修飾指針,需強(qiáng)制轉(zhuǎn)化為可改指針
 char *s1, *s2;
 if ( !*str2 )//str2為空返回str1首地址
 return((char *)str1);//返回值為char*,需強(qiáng)轉(zhuǎn)成char*
 while (*cp)
 {
 s1 = cp;
 s2 = (char *) str2;
 while ( *s1 && *s2 && !(*s1-*s2) )//*s1 s2不為'\0'且*s1==*s2,
 s1++, s2++;
 
 if (!*s2)//*s2為'\0'則返回cp
 return cp;
 cp++;//否則cp++
 }

 return NULL;//沒有找到則返回NULL
}

4、strtok 函數(shù)的使用

char * strtok ( char * str, const char * sep);
? 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 指針。
#include <stdio.h>
#include <string.h>

int main()
{
 char arr[] = "192.168.6.111";
 char* sep = ".";
 char* str = NULL;
 for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
 {
 printf("%s\n", str);
 }
 return 0;
}

C語(yǔ)言第二十六彈---字符串函數(shù)(下),C語(yǔ)言詳解,c語(yǔ)言,開發(fā)語(yǔ)言,算法

5、strerror 函數(shù)的使用

char * strerror ( int errnum );
strerror函數(shù)可以把參數(shù)部分錯(cuò)誤碼對(duì)應(yīng)的錯(cuò)誤信息的字符串地址返回來。
在不同的系統(tǒng)和C語(yǔ)?標(biāo)準(zhǔn)庫(kù)的實(shí)現(xiàn)中都規(guī)定了?些錯(cuò)誤碼,?般是放在 errno.h 這個(gè)頭文件中說明的,C語(yǔ)言程序啟動(dòng)的時(shí)候就會(huì)使用?個(gè)全面的變量errno來記錄程序的當(dāng)前錯(cuò)誤碼,只不過程序啟動(dòng)的時(shí)候errno是0,表示沒有錯(cuò)誤,當(dāng)我們?cè)谑褂脴?biāo)準(zhǔn)庫(kù)中的函數(shù)的時(shí)候發(fā)?了某種錯(cuò)誤,就會(huì)講對(duì)應(yīng)的錯(cuò)誤碼,存放在errno中,而?個(gè)錯(cuò)誤碼的數(shù)字是整數(shù)很難理解是什么意思,所以每?個(gè)錯(cuò)誤碼都是有對(duì)應(yīng)的錯(cuò)誤信息的。strerror函數(shù)就可以將錯(cuò)誤對(duì)應(yīng)的錯(cuò)誤信息字符串的地址返回。
#include <errno.h>
#include <string.h>
#include <stdio.h>

//我們打印?下0~10這些錯(cuò)誤碼對(duì)應(yīng)的信息
int main()
{
 int i = 0;
 for (i = 0; i <= 10; i++) {
 printf("%s\n", strerror(i));
 }
 return 0;
}
在Windows11+VS2022環(huán)境下輸出的結(jié)果如下:
No error? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 沒有錯(cuò)誤
Operation not permitted? ? ? ? ?不允許操作
No such file or directory? ? ? ? ?沒有這樣的文件或目錄
No such process? ? ? ? ? ? ? ? ? ? 沒有這樣的過程
Interrupted function call? ? ? ? ?中斷的函數(shù)調(diào)用
Input/output error? ? ? ? ? ? ? ? ? ?輸入/輸出誤差
No such device or address? ? 沒有這樣的設(shè)備或地址
Arg list too long? ? ? ? ? ? ? ? ? ? ? 參數(shù)列表太長(zhǎng)
Exec format errorExec? ? ? ? ? ?格式錯(cuò)誤
Bad file descriptor? ? ? ? ? ? ? ? ? 錯(cuò)誤的文件描述符
No child processes? ? ? ? ? ? ? ? 無子進(jìn)程
舉例:
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main ()
{
 FILE * pFile;
 pFile = fopen ("unexist.ent","r");
 if (pFile == NULL)
 printf ("Error opening file unexist.ent: %s\n", strerror(errno));
 return 0;
}
輸出:
 Error opening file unexist.ent: No such file or directory
也可以了解?下perror函數(shù),perror?函數(shù)相當(dāng)于?次將上述代碼中的第9行完成了,直接將錯(cuò)誤信息打印出來。perror函數(shù)打印完參數(shù)部分的字符串后,再打印?個(gè)冒號(hào)和?個(gè)空格,再打印錯(cuò)誤信息。
?

6、perror 函數(shù)的使用

void perror ( const char * str );
將 errno 的值解釋為錯(cuò)誤消息,并將其打印到 stderr(標(biāo)準(zhǔn)錯(cuò)誤輸出流,通常是控制臺(tái)),可以選擇在它前面加上 str 中指定的自定義消息。
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main ()
{
 FILE * pFile;
 pFile = fopen ("unexist.ent","r");
 if (pFile == NULL)
 perror("Error opening file unexist.ent");
 return 0;
}
輸出:
Error opening file unexist.ent: No such file or directory

總結(jié)


本篇博客就結(jié)束啦,謝謝大家的觀看,如果公主少年們有好的建議可以留言喔,謝謝大家啦!文章來源地址http://www.zghlxwxcb.cn/news/detail-830022.html

到了這里,關(guān)于C語(yǔ)言第二十六彈---字符串函數(shù)(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語(yǔ)言:字符函數(shù)和字符串函數(shù)(一篇拿捏字符串函數(shù)!)

    C語(yǔ)言:字符函數(shù)和字符串函數(shù)(一篇拿捏字符串函數(shù)!)

    目錄 求字符串長(zhǎng)度: 1. strlen(字符串長(zhǎng)度) 長(zhǎng)度不受限制函數(shù): 2. strcpy(字符串拷貝) 3. strcat(字符串追加) 4. strcmp(字符串比較) 長(zhǎng)度受限制函數(shù): 5. strncpy(字符串拷貝) 6. strncat(字符串追加) 7. strncmp(字符串比較) 字符串查找: 8. strstr(查找字符串子串) 9. strtok(字符串分割) 錯(cuò)誤信

    2024年02月10日
    瀏覽(95)
  • 【C語(yǔ)言】字符函數(shù),字符串函數(shù),內(nèi)存函數(shù)

    【C語(yǔ)言】字符函數(shù),字符串函數(shù),內(nèi)存函數(shù)

    大家好!今天我們來學(xué)習(xí)C語(yǔ)言中的字符函數(shù),字符串函數(shù)和內(nèi)存函數(shù)。 目錄 1. 字符函數(shù) 1.1 字符分類函數(shù) 1.2 字符轉(zhuǎn)換函數(shù) 1.2.1 tolower(將大寫字母轉(zhuǎn)化為小寫字母) 1.2.2 toupper(將小寫字母轉(zhuǎn)化為大寫字母) 2. 字符串函數(shù) 2.1 字符串輸入函數(shù) 2.1.1 gets() ?2.1.2 fgets() 2.2 字符串

    2024年02月10日
    瀏覽(27)
  • C語(yǔ)言—字符函數(shù)和字符串函數(shù)

    C語(yǔ)言—字符函數(shù)和字符串函數(shù)

    C語(yǔ)言中對(duì)字符和字符串的處理很是頻繁,但是C語(yǔ)言本身是沒有字符串類型的,字符串通常放在 常量字符串中或者字符數(shù)組中。字符串常量適用于那些對(duì)它不做修改的字符串函數(shù)。 strlen函數(shù)的介紹 strlen函數(shù)用于求字符串的長(zhǎng)度 注: 字符串已經(jīng) ‘\\0’ 作為結(jié)束標(biāo)志,strlen函

    2024年02月07日
    瀏覽(21)
  • C語(yǔ)言:字符函數(shù)和字符串函數(shù)

    C語(yǔ)言:字符函數(shù)和字符串函數(shù)

    C語(yǔ)言:初識(shí)C語(yǔ)言 C語(yǔ)言:分支語(yǔ)句和循環(huán)語(yǔ)句 C語(yǔ)言:函數(shù) C語(yǔ)言:數(shù)組 C語(yǔ)言:操作符詳解 C語(yǔ)言:指針詳解 C語(yǔ)言:結(jié)構(gòu)體 C語(yǔ)言:數(shù)據(jù)的存儲(chǔ) 今天來盤一下字符函數(shù)和字符串函數(shù)。 C語(yǔ)言中對(duì)字符和字符串的處理很是頻繁,但是C語(yǔ)言本身是沒有字符串類型的,字符串通常

    2024年02月11日
    瀏覽(27)
  • C語(yǔ)言——字符函數(shù)和字符串函數(shù)

    C語(yǔ)言——字符函數(shù)和字符串函數(shù)

    assert.h 頭文件定義了宏assert(),?于在運(yùn)?時(shí)確保程序符合指定條件,如果不符合,就報(bào) 錯(cuò)終?運(yùn)?。這個(gè)宏常常被稱為 “斷?” 。 assert() 宏接受?個(gè)表達(dá)式作為參數(shù)。如果該表達(dá)式為真(返回值?零), assert() 不會(huì)產(chǎn)?任何作?,程序繼續(xù)運(yùn)?。如果該表達(dá)式為假(

    2024年04月25日
    瀏覽(21)
  • C語(yǔ)言 - 字符函數(shù)和字符串函數(shù)

    C語(yǔ)言 - 字符函數(shù)和字符串函數(shù)

    目的:學(xué)習(xí)主要常見字符串和字符串函數(shù),及其部分函數(shù)的模擬過程。 C語(yǔ)?中有?系列的函數(shù)是專?做字符分類的,也就是?個(gè)字符是屬于什么類型的字符的。 這些函數(shù)的使?都需要包含?個(gè)頭?件是 ctype.h。 這些函數(shù)的使??法?常類似,我們就講解?個(gè)函數(shù)的事情,其

    2024年02月05日
    瀏覽(25)
  • 【C語(yǔ)言】字符函數(shù)和字符串函數(shù)

    【C語(yǔ)言】字符函數(shù)和字符串函數(shù)

    ? 目錄 1.求字符串長(zhǎng)度strlen 2.長(zhǎng)度不受限制的字符串函數(shù) 字符串拷貝strcpy 字符串追加strcat 字符串比較strcmp 3.長(zhǎng)度受限制的字符串函數(shù)介紹strncpy strncat ?編輯strncmp 4.字符串查找strstr 5.字符串分割strtok 6.錯(cuò)誤信息報(bào)告 strerror perror 7.字符分類函數(shù) 8.字符轉(zhuǎn)換函數(shù) ?9.內(nèi)存操作函

    2024年02月12日
    瀏覽(34)
  • C語(yǔ)言字符函數(shù)和字符串函數(shù)詳解

    C語(yǔ)言字符函數(shù)和字符串函數(shù)詳解

    ? ? ? ?Hello, 大家好,我是一代,今天給大家?guī)碛嘘P(guān)字符函數(shù)和字符串函數(shù)的有關(guān)知識(shí) ? ? ? ?所屬專欄:C語(yǔ)言 ? ? ? ?創(chuàng)作不易,望得到各位佬們的互三呦 在C語(yǔ)言中有一些函數(shù)是專門為字符設(shè)計(jì)的,這些函數(shù)的使用都需要包含一個(gè)頭文件ctype.h 如:(注:以下函數(shù)原型都

    2024年03月20日
    瀏覽(32)
  • 【c語(yǔ)言】字符函數(shù)與字符串函數(shù)(上)

    【c語(yǔ)言】字符函數(shù)與字符串函數(shù)(上)

    大家好呀,今天給大家分享一下字符函數(shù)和字符串函數(shù),說起字符函數(shù)和字符串函數(shù)大家會(huì)想到哪些呢??我想到的只有求字符串長(zhǎng)度的strlen,拷貝字符串的strcpy,字符串比較相同的strcmp,今天,我要分享給大家的是我們一些其他的字符函數(shù)和字符串函數(shù),跟著小張一起去看看吧

    2024年02月13日
    瀏覽(26)
  • C語(yǔ)言——字符函數(shù)和字符串函數(shù)(二)

    C語(yǔ)言——字符函數(shù)和字符串函數(shù)(二)

    ??前言: 上一篇文章C語(yǔ)言——字符函數(shù)和字符串函數(shù)(一)對(duì) 字符函數(shù)和字符串函數(shù) strlen , strcpy 和 strncpy , strcat 和 strncat 進(jìn)行了初步的講解 這篇文章主要再講解幾個(gè)我們 常用到的其他字符串函數(shù) (附上實(shí)例): 1,strcmp和strncmp 2,strstr ??個(gè)人簡(jiǎn)介:努力學(xué)習(xí)ing ??個(gè)

    2024年02月04日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包