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

C語(yǔ)言中strlen() strcpy() strcat() strcmp()函數(shù)的實(shí)現(xiàn)方法

 更新時(shí)間:2017年08月07日 16:26:44   作者:曉百  
這篇文章主要介紹了C語(yǔ)言中strlen() strcpy() strcat() strcmp()函數(shù)的實(shí)現(xiàn)方法,需要的朋友可以參考下

strlen函數(shù)原型:unsigned int strlen(const char *);返回的是字符串中第一個(gè)\0之前的字符個(gè)數(shù)。

  1.strcat函數(shù)原型char* strcat(char* dest,const char* src); 進(jìn)行字符串的拼接,將第二個(gè)字符串連接到第一個(gè)字符串中第一個(gè)出現(xiàn)\0開(kāi)始的地方。返回的是拼接后字符的首地址。并不檢查第一個(gè)數(shù)組的大小是否可以容納第二個(gè)字符串。如果第一個(gè)數(shù)組的已分配的內(nèi)存不夠容納第二個(gè)字符串,則多出來(lái)的字符將會(huì)溢出到相鄰的內(nèi)存單元。

  2.strncat函數(shù)原型:strncat(dest,src,maxsize)功能跟strcat一致,不過(guò)它帶有一個(gè)maxsize的參數(shù),設(shè)置容納的最大的字符長(zhǎng)度。如在遇到\0之前達(dá)到了最大字符長(zhǎng)度,則會(huì)只連接最大字符長(zhǎng)度個(gè)數(shù)的字符。

  3.strcpy函數(shù)原型 char* strcpy(char* dest,const char* src); 將第二個(gè)字符串\0之前的字符復(fù)制到第一個(gè)內(nèi)存地址內(nèi)。返回的是復(fù)制后的字符串的首地址。有char*返回值是為了函數(shù)能夠支持鏈?zhǔn)奖磉_(dá)式,增加了函數(shù)的“附加值”。 char a[7]="abcdef",char b[5]="xyz";

strcpy(a,b)函數(shù) 當(dāng)將后面的數(shù)組賦值給前面那個(gè)時(shí)侯 除去五個(gè)元素后,從下標(biāo)為5開(kāi)始的元素仍舊是之前a[5]的元素。

  4.strncpy(str1,str2,numbe)函數(shù)是將str2中的前number個(gè)字符賦給str1,或是將\0之前的字符賦給str1.

  5.strcmp函數(shù)原型 int strcmp(const char *src1,const char* src2);進(jìn)行兩個(gè)字符串中從第一個(gè)開(kāi)始的ASCII碼的比較。遇到\0或者不一致時(shí)退出,如果前者大于后者返回1,小于返回-1 如果在兩個(gè)中的任何一個(gè)的\0之前都保持一致,則返回0. 當(dāng)src或src遇到\0時(shí)即停止比較.strcmp比較的是字符串,不是字符,字符之間的比較可以直接用==

  6.strncmp(str1,str2,numbe)函數(shù)在strcmp的基礎(chǔ)上多了一個(gè)int參數(shù),即指定比較前幾個(gè)字符是否相等。

注意:對(duì)于strcat函數(shù)和strcpy函數(shù)并沒(méi)有進(jìn)行邊界大小的限定,所以在用時(shí)要注意是否足夠內(nèi)存。

對(duì)于內(nèi)存問(wèn)題:用memcpy函數(shù)更為安全。

memcpy函數(shù)原型void * memcpy(void *desc,const char* src,unsigned int count);相對(duì)于strcpy函數(shù),memcpy函數(shù)并不是將\0前面的字符復(fù)制給desc,而是將前count個(gè)字符進(jìn)行復(fù)制。

memcmp函數(shù),函數(shù)原型: int memcmp(void *buf1, void *buf2, unsigned int count);也是對(duì)兩個(gè)字符串之前的count個(gè)字符進(jìn)行比較。

例子:

#include<stdio.h>
#include<assert.h>
//strlen
unsigned int strlenght(const char* src)
{
 unsigned int len=0;
 assert(src!=0);
 while(*src++)
 {
  len++;
 }
 return len;
}
//strcat
char* strlink(char* dest,char* src)
{
 char *tmp=dest;
 assert((dest!= NULL)&&(src!=NULL));
 while(*dest++);
 *dest--;
 while(*dest++=*src++);
  return tmp;
}
//strcpy
char* strcopy(char* dest,const char* src)
{
 char *tmp=dest;
 assert((dest!=NULL)&&(src!=NULL));
 while(*src)
 {
  *dest++=*src++;
 }
 *dest='\0';
 return tmp;
}
//strcmp
int strcompare(const char* src1,const char* src2)
{
 int x=0;
 while(!(x = *src1-*src2) && *src1)
 {
  src1++;
  src2++;
 }
 if(x>0)
  x = 1;
 if(x<0)
  x = -1;
 return x;
}
void main()
{
 char arr[100] = "It's wonderful weather!!";
 char arr1[20] = "I am\0 fine!";
 char *arr2;
 printf("%s的長(zhǎng)度為:%d\n",arr,strlenght(arr));
 printf("%s的長(zhǎng)度為:%d\n",arr1,strlenght(arr1));
 arr2 = strlink(arr,arr1);
 printf("%s\n%s\n",arr2,arr);
 printf("%s %s\n %d\n",arr1,arr,strcompare(arr1,arr));
 printf("%s\n%s\n",arr,strcopy(arr,arr1));
}

總結(jié)

以上所述是小編給大家介紹的C語(yǔ)言中strlen() strcpy() strcat() strcmp()函數(shù)的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例分享

    使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例分享

    vector是指能夠存放任意類(lèi)型的動(dòng)態(tài)數(shù)組,而C語(yǔ)言中并沒(méi)有面向?qū)ο蟮腃++那樣內(nèi)置vector類(lèi),所以我們接下來(lái)就來(lái)看一下使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例,需要的朋友可以參考下
    2016-05-05
  • break的使用for循環(huán)嵌套示例

    break的使用for循環(huán)嵌套示例

    這篇文章主要介紹了break的使用for循環(huán)嵌套示例,需要的朋友可以參考下
    2014-02-02
  • 詳解C++?STL模擬實(shí)現(xiàn)vector

    詳解C++?STL模擬實(shí)現(xiàn)vector

    這篇文章主要為大家詳細(xì)介紹了C++如何模擬實(shí)現(xiàn)STL容器vector,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2023-01-01
  • C++ BloomFilter布隆過(guò)濾器應(yīng)用及概念詳解

    C++ BloomFilter布隆過(guò)濾器應(yīng)用及概念詳解

    布隆過(guò)濾器是由布?。˙urton Howard Bloom)在1970年提出的 一種緊湊型的、比較巧妙的概率型數(shù)據(jù)結(jié)構(gòu),特點(diǎn)是高效地插入和查詢(xún),可以用來(lái)告訴你 “某樣?xùn)|西一定不存在或者可能存在”,它是用多個(gè)哈希函數(shù),將一個(gè)數(shù)據(jù)映射到位圖結(jié)構(gòu)中
    2023-03-03
  • QT中線程池QThreadPool類(lèi)概念和使用方法詳解

    QT中線程池QThreadPool類(lèi)概念和使用方法詳解

    這篇文章主要為大家介紹了QT中線程池QThreadPool類(lèi)概念和使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享

    一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享

    這篇文章主要介紹了一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享,包括節(jié)點(diǎn)打印和轉(zhuǎn)換為鏡像等問(wèn)題的解答,需要的朋友可以參考下
    2016-02-02
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將用C語(yǔ)言實(shí)現(xiàn)單鏈表,需要的可以參考一下
    2022-06-06
  • C++詳細(xì)講解IO流原理

    C++詳細(xì)講解IO流原理

    當(dāng)程序與外界進(jìn)行信息交換時(shí),存在兩個(gè)對(duì)象,一個(gè)是程序中的對(duì)象,另一個(gè)是文件對(duì)象。流是信息流動(dòng)的一種抽象,它負(fù)責(zé)在數(shù)據(jù)的生產(chǎn)者和數(shù)據(jù)的消費(fèi)者之間建立聯(lián)系,并管理數(shù)據(jù)的流動(dòng)
    2022-05-05
  • C++實(shí)現(xiàn)統(tǒng)計(jì)代碼運(yùn)行時(shí)間的示例詳解

    C++實(shí)現(xiàn)統(tǒng)計(jì)代碼運(yùn)行時(shí)間的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C++一個(gè)有趣的小項(xiàng)目——統(tǒng)計(jì)代碼運(yùn)行時(shí)間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • C語(yǔ)言qsort函數(shù)使用方法詳解

    C語(yǔ)言qsort函數(shù)使用方法詳解

    qsort是一個(gè)庫(kù)函數(shù),基于快速排序算法實(shí)現(xiàn)的一個(gè)排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言qsort()函數(shù)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

乌拉特前旗| 白河县| 广西| 安塞县| 娄底市| 安平县| 南康市| 安多县| 元朗区| 收藏| 邯郸市| 灌云县| 蕉岭县| 潞城市| 安达市| 安吉县| 正镶白旗| 长沙市| 云霄县| 永定县| 舒兰市| 镇宁| 呼图壁县| 绥阳县| 拉孜县| 会同县| 上栗县| 阜城县| 威远县| 玉环县| 巴林右旗| 潼关县| 夏邑县| 新昌县| 兴义市| 龙海市| 韩城市| 苏尼特右旗| 将乐县| 合阳县| 塔河县|