首先是使用庫函數(shù)
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、沙洋網(wǎng)絡(luò)推廣、小程序開發(fā)、沙洋網(wǎng)絡(luò)營銷、沙洋企業(yè)策劃、沙洋品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供沙洋建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
比如下面代碼
void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //該函數(shù)還有另一個(gè)版本可以按長度截取 }
還有一個(gè)函數(shù)是memcpy,這個(gè)是內(nèi)存拷貝,原型是
void memcpy(void *dest, const void *src, size_t n); 需要注意的是這個(gè)函數(shù)第一個(gè)和第二個(gè)指針都是void型且第二個(gè)指針不能被修改,第三個(gè)參數(shù)是需要拷貝的內(nèi)存長度按字節(jié)記。
然后是用指針引用,注意這個(gè)并非賦值,而是引用,這種操作需要注意內(nèi)存。
char s1[] = "abcdefg";//定義一組字符串char *s2 = s1;//按照指針拷貝字符串
第三種方法就是直接賦值了
void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//獲取第一個(gè)字符串的長度 int len2 = strlen(s2);//獲取第二個(gè)字符串的長度 int len = 0; //字符串總長度 if(len1 = len2){ len = len2; //選擇COPY的長度 }else{ len = len1; } for(int i = 0 ; i len ; i++){ s1[i] = s2[i]; //實(shí)現(xiàn)數(shù)據(jù)拷貝 }}
編寫程序,實(shí)現(xiàn)兩個(gè)字符串拷貝的函數(shù)strcopy。
要求:
不允許使用C的字符串函數(shù)strcpy。
主程序中從鍵盤輸入兩個(gè)字符串。調(diào)用strcopy函數(shù)實(shí)現(xiàn)字符串拷貝操作。
輸出拷貝前后,兩個(gè)字符串的內(nèi)容。
strcpy()函數(shù)只能拷貝字符串。strcpy()函數(shù)將源字符串的每個(gè)字節(jié)拷貝到目錄字符串中,當(dāng)遇到字符串末尾的null字符(\0)時(shí),它會(huì)刪去該字符,并結(jié)束拷貝。 memcpy()函數(shù)可以拷貝任意類型的數(shù)據(jù)。因?yàn)椴⒉皇撬械臄?shù)據(jù)都以null字符結(jié)束,所以你要為memcpy()函數(shù)指定要拷貝的字節(jié)數(shù)。 在拷貝字符串時(shí),通常都使用strcpy()函數(shù);在拷貝其它數(shù)據(jù)(例如結(jié)構(gòu))時(shí),通常都使用memcpy()函數(shù)。以下是一個(gè)使用strcpy()函數(shù)和memcpy()函數(shù)的例子: #include stdio. h #include string. h typedef struct cust-str {int id ;char last_name [20] ; char first_name[l5];} CUSTREC;void main (void); void main (void){char * src_string = "This is the source string" ; char dest_string[50]; CUSTREC src_cust; CUSTREC dest_cust; printf("Hello! I'm going to copy src_string into dest_string!\n"); / * Copy src_ string into dest-string. Notice that the destination string is the first argument. Notice also that the strcpy() function returns a pointer to the destination string. * / printf("Done! dest_string is: %s\n" , strcpy(dest_string, src_string)) ; printf("Encore! Let's copy one CUSTREC to another. \n") ; prinft("I'll copy src_cust into dest_cust. \n"); / * First, intialize the src_cust data members. * / src_cust. id = 1 ; strcpy(src_cust. last_name, "Strahan"); strcpy(src_cust. first_name, "Troy"); / * Now, Use the memcpy() function to copy the src-cust structure to the dest_cust structure. Notice that, just as with strcpy(), the destination comes first. * / memcpy(dest_cust, src_cust, sizeof(CUSTREC));
/*
原 串 : Windows Application
目標(biāo)串 : Windows Application
請按任意鍵繼續(xù). . .
*/
#include stdio.h
#include stdlib.h
char *strcopy(char ds[], char ss[]) {
int i = 0;
while(ds[i] = ss[i]) ++i;
return ds;
}
int main() {
char s[] = "Windows Application";
char d[20];
printf("原 串 : %s\n",s);
printf("目標(biāo)串 : %s\n",strcopy(d,s));
system("pause");
return 0;
}