你這個拷貝函數里怎么沒有主函數里的n來判斷哪些拷貝過來?
創新互聯建站專注于建平網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供建平營銷型網站建設,建平網站制作、建平網頁設計、建平網站官網定制、成都小程序開發服務,打造建平網絡公司原創品牌,更為您提供建平網站排名全網營銷落地服務。
我加了個n,把原來的n改成了m,再加了兩條語句,其他的沒動,代碼如下:
#includestdio.h
#define
MAX_STR_LEN
100
char
*
str_cpy(int
n,char
*
t,
char
*
s)
{
int
i=0,m;
while(*s!='\0')
{
*t=*s;
t++;
s++;
i++;
}
for
(m=i;m0;m--)
{
t--;
if(mn)
*t='\0';
//把超過長度n的都變成結束符'\0'
}
return
t;
}
整體使用示例如下:
其中char * strcopy( char *strDest, const char *strSrc )即strcopy實現方法,并在main函數中進行了測試!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include stdio.h
#include time.h
/*把從src地址開始的字符串復制到以dest開始的字符串中*/
char* strcopy (char* dest, char *src) {
char* r = dest;
while((*r++ = *src++)!='\0');
return dest;
}
int main () {
char *str1="abcde";
char *str2;
str2 = strcopy (str2, str1); /*把str1復制到str2*/
puts (str2);
return 0;
}
#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;
參考資料:
百度百科-字符串
*q='\0';
return
*q;
所以函數返回的是‘\0’。然后主函數里面你的printf打印輸出的是函數的返回值而不是num這個數組,你把%s后面的參數改成num就行了。
網站題目:編寫字符串拷貝函數c語言,C語言字符串拷貝函數
網頁URL:http://vcdvsql.cn/article18/hedpdp.html
成都網站建設公司_創新互聯,為您提供軟件開發、定制網站、建站公司、微信公眾號、品牌網站設計、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯