




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C語言詳細分析常見字符串函數(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;程序在運行過程中,任何一個函數(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é)進行的
可用以下代碼模擬實現(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)文化建設(shè)評估試卷及答案
- 2025年信息安全技術(shù)人才資格考試卷及答案
- 2025年護理管理師考試試題及答案
- 2025年統(tǒng)計學(xué)原理與應(yīng)用考試試題及答案
- 知識產(chǎn)權(quán)侵權(quán)糾紛訴訟代理服務(wù)合同
- 體育賽事公平競賽承諾書標準模板下載
- 婚姻忠誠協(xié)議中房產(chǎn)居住權(quán)專屬保留范本
- 企業(yè)高級管理人員競業(yè)限制及補償協(xié)議
- 網(wǎng)絡(luò)店鋪債務(wù)處理與權(quán)益維護合同
- 娛樂業(yè)勞務(wù)派遣職業(yè)病防治及責任協(xié)議
- 全球化背景下高中歷史家國情懷教育的策略
- 租地臨時建房合同協(xié)議
- 中央2024年市場監(jiān)管總局直屬事業(yè)單位招聘筆試歷年參考題庫附帶答案詳解
- 2025年FRM金融風險管理師考試專業(yè)試卷(金融風險管理案例分析)
- 護士法律法規(guī)知識培訓(xùn)課件
- 資源與運營管理-第二次形考任務(wù)-國開-參考資料
- 2025-2030激活素A行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 多尺度矢量數(shù)據(jù)融合-全面剖析
- 2025-2030中國建筑鋼結(jié)構(gòu)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 西部計劃考試考題及答案
- 商業(yè)物業(yè)管理培訓(xùn)
評論
0/150
提交評論