要先加入
創(chuàng)新互聯(lián)于2013年開(kāi)始,先為和縣等服務(wù)建站,和縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為和縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
頭文件
#include
里面的有個(gè)函數(shù)可以直接復(fù)制字符串
例如:
strcpy(str2,str1)
;
把str1中的字符復(fù)制到str2中。
#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';//拷貝完畢之后一定要加一個(gè)結(jié)束符號(hào)
return p;
}
擴(kuò)展資料:
字符串相關(guān)函數(shù)應(yīng)用:
1. 連接運(yùn)算 concat(s1,s2,s3…sn) 相當(dāng)于s1+s2+s3+…+sn。
例:concat(‘11’,'aa’)='11aa’;
2. 求子串。 Copy(s,I,I) 從字符串s中截取第I個(gè)字符開(kāi)始后的長(zhǎng)度為l的子串。
例:copy(‘a(chǎn)bdag’,2,3)=’bda’;
3. 刪除子串。過(guò)程 Delete(s,I,l) 從字符串s中刪除第I個(gè)字符開(kāi)始后的長(zhǎng)度為l的子串。
例:s:=’abcde’;delete(s,2,3);結(jié)果s:=’ae’;
4. 插入子串。 過(guò)程Insert(s1,s2,I) 把s1插入到s2的第I個(gè)位置
例:s:=abc;insert(‘12’,s,2);結(jié)果s:=’a12bc’;
5. 求字符串長(zhǎng)度 length(s) 例:length(‘12abc’)=5;
參考資料:
百度百科-字符串
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地址開(kāi)始的字符串復(fù)制到以dest開(kāi)始的字符串中*/
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復(fù)制到str2*/
puts (str2);
return 0;
}
首先是使用庫(kù)函數(shù)
比如下面代碼
void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //該函數(shù)還有另一個(gè)版本可以按長(zhǎng)度截取 }
還有一個(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)存長(zhǎng)度按字節(jié)記。
然后是用指針引用,注意這個(gè)并非賦值,而是引用,這種操作需要注意內(nèi)存。
char s1[] = "abcdefg";//定義一組字符串char *s2 = s1;//按照指針拷貝字符串
第三種方法就是直接賦值了
void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//獲取第一個(gè)字符串的長(zhǎng)度 int len2 = strlen(s2);//獲取第二個(gè)字符串的長(zhǎng)度 int len = 0; //字符串總長(zhǎng)度 if(len1 = len2){ len = len2; //選擇COPY的長(zhǎng)度 }else{ len = len1; } for(int i = 0 ; i len ; i++){ s1[i] = s2[i]; //實(shí)現(xiàn)數(shù)據(jù)拷貝 }}
1、首先需要建立一個(gè)新的文件,輸入頭文件和主函數(shù)。
2、接下來(lái)需要定義變量類(lèi)型。
3、設(shè)置完變量類(lèi)型之后開(kāi)始調(diào)用cpy函數(shù)。
4、接下來(lái)需要定義一個(gè)函數(shù),并定義變量類(lèi)型。
5、最后加一個(gè)字符串結(jié)束符,并在主函數(shù)中輸出。
6、編譯。運(yùn)行,可以看到字符串a(chǎn)復(fù)制到字符串b中。
1、puts函數(shù)——輸出字符串的函數(shù)
一般的形式為puts(字符串組)
作用:將一個(gè)字符串輸出到終端。如,char一個(gè)string,并賦予初值。調(diào)用puts(string);進(jìn)行字符串的輸出。
2、gets函數(shù)——輸入字符串的函數(shù)
一般的形式:gets(字符數(shù)組)
作用:從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值成為字符數(shù)組的起始地址。
gets(str);
鍵盤(pán)輸入,,,,你懂得。
注意:puts和gets函數(shù)只能輸出或者輸入一個(gè)字符串。
3、strcat函數(shù)——字符串連接函數(shù)
一般的形式:strcat(字符數(shù)組1,字符數(shù)組2);
作用:把兩個(gè)字符串?dāng)?shù)組中字符串連接起來(lái),把字符串2連接到字符串1的后面。
說(shuō)明:字符數(shù)組1必須足夠大,以便容納連接后的新字符串。
4、strcpy/strncpy函數(shù)——字符串復(fù)制函數(shù)
一般形式:strcpy(字符數(shù)組1,字符串2);
作用:將字符串2復(fù)制到字符數(shù)組1中去。
如:char str1[10],str2[]="DongTeng";
strcpy(str1,str2);
執(zhí)行后的結(jié)果為:你懂得
注意:
1. 不能用賦值語(yǔ)句直接將一個(gè)字符串常量或者字符數(shù)組直接給一個(gè)字符數(shù)組。
2. 用strncpy可以賦值指定的位置的字符。strncpy(str1,str2,3);將str2中的第3個(gè)字符復(fù)制到str1中。
5、strcmp函數(shù)——字符串比較函數(shù)
一般形式:strcmp(字符串1,字符串2);
作用:用來(lái)比較兩個(gè)字符串的差異。具有不同的比較規(guī)則。
6、strlen函數(shù)——測(cè)字符串長(zhǎng)度的函數(shù)
一般形式:strlen(字符數(shù)組);
如:char str[10]="DongTeng";
printf("%d",strlen(str));
得到的結(jié)果是:5
7、strlwr函數(shù)——轉(zhuǎn)換為小寫(xiě)的函數(shù)
一般形式:strlwr(字符串);
8、strupr函數(shù)——轉(zhuǎn)換為大寫(xiě)的函數(shù)
一般形式:strupr(字符串)。