編寫程序,實現兩個字符串拷貝的函數strcopy。

目前成都創(chuàng)新互聯公司已為上1000家的企業(yè)提供了網站建設、域名、網頁空間、綿陽服務器托管、企業(yè)網站設計、甘南網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
要求:
不允許使用C的字符串函數strcpy。
主程序中從鍵盤輸入兩個字符串。調用strcopy函數實現字符串拷貝操作。
輸出拷貝前后,兩個字符串的內容。
首先是使用庫函數
比如下面代碼
void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //該函數還有另一個版本可以按長度截取 }
還有一個函數是memcpy,這個是內存拷貝,原型是
void memcpy(void *dest, const void *src, size_t n); 需要注意的是這個函數第一個和第二個指針都是void型且第二個指針不能被修改,第三個參數是需要拷貝的內存長度按字節(jié)記。
然后是用指針引用,注意這個并非賦值,而是引用,這種操作需要注意內存。
char s1[] = "abcdefg";//定義一組字符串char *s2 = s1;//按照指針拷貝字符串
第三種方法就是直接賦值了
void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//獲取第一個字符串的長度 int len2 = strlen(s2);//獲取第二個字符串的長度 int len = 0; //字符串總長度 if(len1 = len2){ len = len2; //選擇COPY的長度 }else{ len = len1; } for(int i = 0 ; i len ; i++){ s1[i] = s2[i]; //實現數據拷貝 }}
#includestdio.h
char *custom_cpy(char *to,char *from);
int main(int argc,char *argv[]){
char *from = "i like c langanger";
char to[30];
char *ptr = custom_cpy(to,from);
printf("%s,%s\n",ptr,to);
return 0;
}
char *custom_cpy(char *to,char *from){
if(to == NULL || from == NULL){
return NULL;
}?
char *p = to;
for(;*from!='\0';from++,to++){
*to = *from;
}?
*to = '\0';//拷貝完畢之后一定要加一個結束符號
return p;
}
擴展資料:
字符串相關函數應用:
1. 連接運算 concat(s1,s2,s3…sn) 相當于s1+s2+s3+…+sn。
例:concat(‘11’,'aa’)='11aa’;
2. 求子串。 Copy(s,I,I) 從字符串s中截取第I個字符開始后的長度為l的子串。
例:copy(‘abdag’,2,3)=’bda’;
3. 刪除子串。過程 Delete(s,I,l) 從字符串s中刪除第I個字符開始后的長度為l的子串。
例:s:=’abcde’;delete(s,2,3);結果s:=’ae’;
4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置
例:s:=abc;insert(‘12’,s,2);結果s:=’a12bc’;
5. 求字符串長度 length(s) 例:length(‘12abc’)=5;
參考資料:
百度百科-字符串
當前文章:拷貝函數c語言,c++ 拷貝構造函數
分享網址:http://www.chinadenli.net/article44/heosee.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站內鏈、外貿網站建設、搜索引擎優(yōu)化、服務器托管、企業(yè)建站、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯