




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第C語言詳細(xì)分析常見字符串函數(shù)與模擬實現(xiàn)六.strncat
char*strncat(char*dest,constchar*source,size_tcount)
作用是將源字符串的前count個字符追加到dest后面、
并且會在結(jié)尾加上\0
chararr1[]="abcdef\0xx";
chararr2[]="qwer";
strncat(arr1,arr2,2);
修改后為abcdefqw
strncat的模擬實現(xiàn)
#define_CRT_SECURE_NO_WARNINGS1
#includestdio.h
#includestring.h
#includeassert.h
voidmy_strncpy(char*str,char*qtr,intsize)
assert(strqtr);
intt=strlen(str);
for(inti=0;isize;i++)
*(str+t+i)=*qtr;
qtr++;
*(str+t+size)='\0';
intmain()
charsrc[50],dest[50];
strcpy(src,"Anice");
strcpy(dest,"BOYYYYYYY");
intn=0;
scanf("%d",
my_strncpy(src,dest,n);
printf("%s",src);
}
七.strncmp
intstrncm(constchar*str,constchar*qtr,size_tnum)
指定比較前num個字符,其他同strcmp一樣
八.strstr
constchar*strstr(constchar*str1,constchar*str2);
char*strstr(char*str1,constchar*str2);
用于查找子串,返回第一次找到的地址
九.strtok
char*strtok(char*str,constchar*sep)
參數(shù)sep是由分隔符組成的一個字符串
str為一個字符串,包含sep中零個或者多個分隔符.
strtok會找到str中第一個分隔符,并把其替換成\0,返回一個指向這個分隔符的指針
若第一個參數(shù)為\0,則從上一波保存的位置向后查找另一個分隔符
若字符串中不存在更多的分隔符,則返回NULL指針
chara[]="A@nice.boy";
charsep[]="@.";
printf("%s",strtok(a,sep));
printf("%s",strtok(NULL,sep));
如以上結(jié)果為Anice
chara[]="A@nice.boy";
constcharsep[]="@.";
chararr[30];
char*str=NULL;
strcpy(arr,a);
for(str=strtok(arr,sep);str!=NULL;str=strtok(NULL,sep))
printf("%s",str);
}
以上輸出為Aniceboy
十.strerror
char*strerror(interrnum)
errno是一個全局變量,記錄最后的錯誤代碼,程序剛剛啟動的時候,errno被設(shè)置為0;程序在運(yùn)行過程中,任何一個函數(shù)發(fā)生錯誤都有可能修改errno的值,讓其變?yōu)橐粋€非零值,用以告知用戶發(fā)生了特定類型的錯誤。
十一.memcpy
void*memcpy(void*dest,constvoid*source,size_tcount)
作用是將源字符串的前count個字節(jié)拷貝到dest上
inta1[20]={1,2,3,4,5,6,7,8};
inta2[5]={0};
memcpy(a1,a2,20);
執(zhí)行后,a1數(shù)組前五個元素變成0
memcpy的模擬實現(xiàn):
由于memcpy的拷貝是一個字節(jié)一個字節(jié)進(jìn)行的
可用以下代碼模擬實現(xiàn)
void*my_memcpy(void*dest,constvoid*source,size_tcount)
assert(sourcedest);
void*ret=dest;
while(count--)
*(char*)dest=*(char*)source;
source=(char*)source+1;
dest=(char*)dest+1;
returnret;
}
十二.memmove
void*memmove(void*dest,constvoid*source,size_tcount)
可以實現(xiàn)重疊內(nèi)存拷貝
模擬實現(xiàn):
void*my_memmove(void*dest,constvoid*source,size_tcount)
if(destsource)
while(count--)
*(char*)dest=*(char*)source;
dest=(char*)dest+1;
source=(char*)source+1;
else
while(count--)
*((char*)dest+count)=*((char*)source+count);
}
十三.memcmp
void*memcpy(void*str,constvoid*qtr,size_tcount)
比較str和qtr的前count個字節(jié),注意是一個字節(jié)一個字節(jié)比較
這就很有意思了
請看以下代碼
inta[5]={1,2,3,4,5};
intb[5]={1,2,3,4,0x11223305};
memcmp(a,b,16);
很明顯數(shù)組的前十六個字節(jié)相同,會返回0,但如果是前十七個呢
這是因為
5存儲為05000000
0x11223305為05332211
十四.mems
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建融金服(河南)科技信息服務(wù)有限公司甘肅分公司招聘30人筆試參考題庫附帶答案詳解
- 2025年蚌埠市龍子湖區(qū)產(chǎn)業(yè)發(fā)展有限公司招聘22人筆試參考題庫附帶答案詳解
- 教育評價改革的路徑與實踐探索
- 超市合作協(xié)議書合同文檔
- 合同協(xié)議書副本圖片
- 食物鏈類型試題及答案
- 理財協(xié)議書合同
- 合同經(jīng)營合同協(xié)議書
- 購山羊合同協(xié)議書范本
- 2025年農(nóng)業(yè)產(chǎn)業(yè)集群區(qū)域協(xié)同發(fā)展報告
- 【MOOC】制造技術(shù)基礎(chǔ)訓(xùn)練-北京理工大學(xué) 中國大學(xué)慕課MOOC答案
- 零售基礎(chǔ) 課件 第三章 零售用戶思維
- 部編版歷史八年級下冊第四單元 第13課《香港和澳門回歸祖國》說課稿
- 中班數(shù)學(xué)活動建造公園
- 2025年中考英語總復(fù)習(xí):書面表達(dá) 刷題練習(xí)題匯編(含答案解析、范文)
- 警察小學(xué)生安全教育講座
- 分期還款協(xié)議書模板示例
- 幼升小公有住宅租賃合同(2篇)
- 實驗室安全教育課件
- 彩票大數(shù)據(jù)預(yù)測分析
- 4.1基因指導(dǎo)蛋白質(zhì)的合成(第1課時)高一下學(xué)期生物人教版必修2
評論
0/150
提交評論