欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

字符串處理函數(shù)-創(chuàng)新互聯(lián)

本筆記內(nèi)容已上傳到個(gè)人博客網(wǎng)站,推薦網(wǎng)站上觀看。
字符串處理函數(shù) | 洛希的智慧之殿堂 (luoxi.work)

創(chuàng)新互聯(lián)建站是專業(yè)的疏附網(wǎng)站建設(shè)公司,疏附接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行疏附網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!文章目錄
  • 字符串處理函數(shù)
    • 1.存放和表示字符串的兩種方法
      • ①字符串常量
      • ②字符數(shù)組
    • 2.字符串處理函數(shù)
      • ①獲取字符串的長(zhǎng)度:`strlen`
      • ②拷貝字符串的`strcpy`和`strncpy`
        • (1)strcpy
        • (2)strncpy
      • ③連接字符串的`strcat`和`strncat`
        • (1)strcat
        • (2)strncat
      • ④比較字符串的strcmp和strncmp
        • (1)strcmp
        • (2)strncmp

字符串處理函數(shù) 1.存放和表示字符串的兩種方法 ①字符串常量

“I LOVE YOU”,“洛?!?/p>②字符數(shù)組

int main
{
//初始化字符數(shù)組的每個(gè)元素
    char str1[10] = {'L','O','V','E','\0'};
//可以不寫元素的個(gè)數(shù),因?yàn)榫幾g器會(huì)自動(dòng)計(jì)算
    char str2[] = {'L','O','V','E','\0'};
//使用字符串常量初始化字符數(shù)組
    char str3[] = {"LOVE"};
//使用字符串常量初始化,可以省略大括號(hào)
    char str4[] ="LOVE";
2.字符串處理函數(shù) ①獲取字符串的長(zhǎng)度:strlen

為了區(qū)分strlen和sizeof的區(qū)別,下面用一串代碼來進(jìn)行演示下他們最后所得到的長(zhǎng)度

#include#include//引用此頭文件才能使用字符串函數(shù),當(dāng)然像vs2019就可以不用,不過最好寫上。
int main ()
{char str[] = "LOVE";
printf("%d\n",strlen(str));
printf("%d\n",sizeof(str));
return 0 ;    
}

下面分別為用sizeof計(jì)算以及用strlen計(jì)算得到的結(jié)果

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-fKmma6qe-1669878738354)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201133823416.png)]

可以看到seziof比strlen多計(jì)算出來了一個(gè),那就是我們常見的空字符’\0’

②拷貝字符串的strcpystrncpy

對(duì)于以上兩個(gè)拷貝字符串的函數(shù),它們到底有什么區(qū)別了,以下用一串代碼來進(jìn)行演示下它們的區(qū)別。

(1)strcpy
#include#includeint main ()
{char str1[]="LOVE";
    char str2[]="LOVE YOU";
    char str3[114514];
    strcpy(str2,str1);//將str1的字符串拷貝到str2中
    strcpy(str3,"I LOVE YOU");//將"T LOVE YOU"這個(gè)字符串拷貝到str3中
    printf("str1=%s\n",str1);
    printf("str2=%s\n",str2);
    printf("str3=%s\n",str3);
return 0 ;
}

最后打印出來的結(jié)果為

image-20221201135257682

但是,如果我們將str2的字符串拷貝到str1中將會(huì)發(fā)生什么呢?

因?yàn)閟tr1只儲(chǔ)存了LOVE以及\0這五個(gè)字符,但是str2存了一共9個(gè)字符,很明顯把str2的拷貝到str1中會(huì)出現(xiàn)錯(cuò)誤,我們來看下這個(gè)錯(cuò)誤的結(jié)果會(huì)帶來什么吧!

#include#includeint main ()
{char str1[]="LOVE";
    char str2[]="LOVE YOU";
    char str3[114514];
    strcpy(str1,str2);//將str2的字符串拷貝到str1中
    strcpy(str3,"I LOVE YOU");//將"T LOVE YOU"這個(gè)字符串拷貝到str3中
    printf("str1=%s\n",str1);
    printf("str2=%s\n",str2);
    printf("str3=%s\n",str3);
return 0 ;
}

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-90cIhX8t-1669878738355)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201140516834.png)]

但是并沒有造成什么影響,這是為什么呢?實(shí)際上如果以上代碼出現(xiàn)這種錯(cuò)誤都是會(huì)覆蓋掉一些字符的,但是本人用的是VSCODE的編譯器,所以沒有什么影響。

(2)strncpy

strncpy對(duì)比strcpy的區(qū)別就是多了一個(gè)n!當(dāng)然這是開玩笑的,實(shí)際上,多的這一個(gè)n就使得它擁有了限制字符拷貝的功能。

我們通過以下代碼來進(jìn)行理解吧。

#include#includeint main ()
{char str1[]="LOVE";
    char str2[]="LOVE YOU";
    char str3[114514];
    strncpy(str1,str2,6);//將str2的字符串拷貝到str1中,并且限制數(shù)量為6
    strcpy(str3,"I LOVE YOU");//將"T LOVE YOU"這個(gè)字符串拷貝到str3中
    printf("str1=%s\n",str1);
    printf("str2=%s\n",str2);
    printf("str3=%s\n",str3);
return 0 ;
}

對(duì)于以上的代碼將會(huì)有怎樣的輸出結(jié)果呢?

image-20221201141257798

這樣我們就實(shí)現(xiàn)了限制拷貝的數(shù)量,但是我們發(fā)現(xiàn)以上打印結(jié)果有個(gè)很大的問題,就是love y后面出現(xiàn)了亂碼?這又是為什么呢?這也是我們經(jīng)常犯的一個(gè)致命的錯(cuò)誤,就是把空字符又忘記了!這個(gè)在我往期的筆記也有提到過,空字符的重要程度,請(qǐng)參考我的往期文章字符和字符串 | 洛希的智慧之殿堂 (luoxi.work)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-SDMTwHTi-1669878738355)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201141557022.png)]

對(duì)于以上出現(xiàn)的問題,我們就必須要使得str1的第七個(gè)字符用’\0’使其進(jìn)行終止,修改后的代碼如下。

#include#includeint main ()
{char str1[]="LOVE";
    str1[6]='\0';//使其拷貝到第7個(gè)字符進(jìn)行終止
    char str2[]="LOVE YOU";
    char str3[114514];
    strncpy(str1,str2,6);//將str2的字符串拷貝到str1中,并且限制數(shù)量為6
    strcpy(str3,"I LOVE YOU");//將"T LOVE YOU"這個(gè)字符串拷貝到str3中
    printf("str1=%s\n",str1);
    printf("str2=%s\n",str2);
    printf("str3=%s\n",str3);
return 0 ;
}

最后得到的結(jié)果才是我們?nèi)缫獾慕Y(jié)果

image-20221201141859555

③連接字符串的strcatstrncat

對(duì)于連接字符串的strcat以及strncat的功能很明顯就跟連接有很大的關(guān)系。而我們看這兩個(gè)函數(shù)是不是也是第二個(gè)函數(shù)比第一個(gè)函數(shù)多了一個(gè)n?讓我們來看看這兩個(gè)函數(shù)的相關(guān)功能的演示代碼吧!

(1)strcat
#include#includeint main ()    
{char str1[] = "I LOVE ";
    char str2[] = "YOU";
    strcat(str1,str2);//將str2的字符串拼接到str1字符串的后面
    printf("str1:%s\n",str1);    
    return 0 ;
}

對(duì)于以上代碼的打印結(jié)果如下

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-CVYqFI77-1669878738356)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201142714923.png)]

(2)strncat

對(duì)于這個(gè)函數(shù),很明顯也是起到了一共限制的作用,但是唯一有個(gè)不同的是,它會(huì)自動(dòng)追加空字符將其結(jié)束!所以我們就可以"偷下懶"不用寫’\0’了,我們用一串代碼來進(jìn)行演示一下吧!

#include#includeint main ()    
{char str1[] = "I LOVE ";
    char str2[] = "YOU";
    strncat(str1,str2,1);//將str2的字符串拼接到str1字符串的后面,限制字符為1
    printf("str1:%s\n",str1);    
    return 0 ;
}

以下為輸出結(jié)果

image-20221201143357711

④比較字符串的strcmp和strncmp

對(duì)于這兩個(gè)函數(shù)的功能,和明顯就是比較字符串啦!但是,它比較的究竟是什么呢?是字符串的長(zhǎng)度嗎?還是什么…如果是比較字符串的長(zhǎng)度那第二個(gè)函數(shù)的限制字符串的長(zhǎng)度是不是有點(diǎn)矛盾了,所以這里來講它們不是用來比較字符串的長(zhǎng)度的,而是通過比較ASCII碼值來比較兩個(gè)字符串是否一致。所以它們常在if語句內(nèi)進(jìn)行判斷。

對(duì)于以上的內(nèi)容,我將用以下的代碼來進(jìn)行演示它們的功能。

(1)strcmp
#include#includeint main()
{char str1[] = "I LOVE";
    char str2[] = "I LOVE";
    if (strcmp(str1, str2))
    {printf("兩個(gè)字符串一致");
    }
    else
    {printf("兩個(gè)字符串不一致");
    }
    return 0;
}

對(duì)于以上代碼,我們可以指定str1和str2的字符串是一致的,最后的結(jié)果是否會(huì)如意呢?我們來看打印結(jié)果

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-dc4FG5eD-1669878738356)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201144523932.png)]

很奇怪,為什么會(huì)出現(xiàn)這個(gè)結(jié)果呢?它們不都是一致的嗎?為什么會(huì)判斷出來它們不一致,這是因?yàn)槲覀?code>忽略了這個(gè)函數(shù)最后返回的值的多少。

而strcmp如何計(jì)算獲得返回值呢?

  • 自左向右逐個(gè)按照ASCII碼值進(jìn)行比較,直到出現(xiàn)不同的字符或遇’\0’為止。
  • 如果返回值< 0,則表示 s1 小于 s2。
  • 如果返回值 >0,則表示 s1 大于 s2。
  • 如果返回值 = 0,則表示 s1 等于 s2。

我們用一串代碼來計(jì)算下它們的返回值吧!

#include#includeint main(void)
{char a[] = "LOVe";
    char b[] = "LOVE";
    char c[] = "love";
    char d[] = "LOVe";
    
	//strcmp()只能比較字符串, 其他形式的參數(shù)不能比較 
	printf("strcmp(a, b):%d\n", strcmp(a, b));//字符串之間的比較b和a進(jìn)行比較,對(duì)應(yīng)上面s1和s2比較
    printf("strcmp(a, c):%d\n", strcmp(a, c));
    printf("strcmp(a, d):%d\n", strcmp(a, d));
	return 0;
}

打印結(jié)果如下

image-20221201145203140

所以對(duì)于我們上面一開始寫的代碼,if語句里面因?yàn)樗鼈z一致返回值為0,導(dǎo)致判斷為假,所以我們只需要加個(gè) !就可以實(shí)現(xiàn)判斷了。

修改的代碼如下

#include#includeint main()
{char str1[] = "I LOVE";
    char str2[] = "I LOVE";
    if (!strcmp(str1, str2))
    {printf("兩個(gè)字符串一致");
    }
    else
    {printf("兩個(gè)字符串不一致");
    }
    return 0;
}

此時(shí)對(duì)應(yīng)的輸出結(jié)果才符合預(yù)期,以下為輸出結(jié)果。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-NIQjhfiD-1669878738356)(https://luoxi2334.oss-cn-shanghai.aliyuncs.com/luoxi-picture/image-20221201145452913.png)]

(2)strncmp

對(duì)于這個(gè)函數(shù),很明顯是起到了限制比較字符個(gè)數(shù)的作用,我們用以下的代碼來幫助理解吧!

#include#includeint main()
{char str1[] = "I LOVE dasdjasdkasd";
    char str2[] = "I LOVE asdsaodiasd";
    if (!strncmp(str1, str2,7))//限制比較前7個(gè)字符
    {printf("兩個(gè)字符串一致");
    }
    else
    {printf("兩個(gè)字符串不一致");
    }
    return 0;
}

以下為打印的結(jié)果

image-20221201145736329

相反的,如果我們限制前10個(gè)字符呢?

#include#includeint main()
{char str1[] = "I LOVE dasdjasdkasd";
    char str2[] = "I LOVE asdsaodiasd";
    if (!strncmp(str1, str2,10))//限制比較前10個(gè)字符
    {printf("兩個(gè)字符串一致");
    }
    else
    {printf("兩個(gè)字符串不一致");
    }
    return 0;
}

打印結(jié)果如下
image-20221201145452913

相反的,如果我們限制前10個(gè)字符呢?

#include#includeint main()
{char str1[] = "I LOVE dasdjasdkasd";
    char str2[] = "I LOVE asdsaodiasd";
    if (!strncmp(str1, str2,10))//限制比較前10個(gè)字符
    {printf("兩個(gè)字符串一致");
    }
    else
    {printf("兩個(gè)字符串不一致");
    }
    return 0;
}

打印結(jié)果如下
image-20221201145951821

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文標(biāo)題:字符串處理函數(shù)-創(chuàng)新互聯(lián)
分享URL:http://chinadenli.net/article46/cdpohg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站維護(hù)、動(dòng)態(tài)網(wǎng)站網(wǎng)站營(yíng)銷、網(wǎng)站內(nèi)鏈手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)