#includestdio.h
公司主營業務:成都做網站、網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯公司推出老城免費做網站回饋大家。
void Copy_string(char* str1, char* str2);? ?//函數聲明
int main()
{
char str1[20];
char str2[20];
puts("請輸入字符串str1:");
gets(str1);? ? ? ? ? ? ? ? ? ? ? ? ? ?//獲取從鍵盤輸入的字符串
Copy_string(str1, str2);
printf("字符串str2:%s\n",str2 );
return 0;
}
void Copy_string(char* str1, char* str2)? ? ?//自定義字符串連接函數
{
int i = 0;
while (str1[i] != 0)
{
str2[i] = str1[i];
i++;
}
str2[i] = '\0';? ? ? ? ? ? ? ? ? ? ? ? ?//添加字符串結束符
}
運行結果:
擴展資料
C字符串庫函數,實現字符串復制函數strcpy
char *strcpy(char *strDest,const char *strSrc)//源字符串參數用const修飾,防止修改源字符串
{
assert(strDest!==NULLstrSrc!== NULL);//斷言
char *ad=strDest;//返回目標地址
while((*strDest++=*strSrc++)!='\0')//'\0'
{
NULL;
}
return ad;
}
在函數中是無法檢查數組(字符串)空間大小的,所以就會一直復制,如果越界了也不會有明顯錯誤,但如果遇到標記為不可寫的內存便會運行時報錯。輸出時也無法檢查數組大小,完全根據結束標志輸出。至于后面的問題,如果越界后內存數據為0,正好可以作為結束標志,不過一般不為0.請問您用的是什么編譯器和操作系統?
雖然成功幾率很大,但只是巧合,絕對不能不加結束標志就作為字符串。
正因為這種錯誤不會很明顯,編譯器不檢查不報錯,有時也能運行,所以緩沖區溢出才滿天飛~~~所以字符串操作一定要格外小心~~~
#includestdio.h
#include string.h//使用strcpy()函數
int main(void)
{
char a[30] = "abcdert";
char b[] = "hdskljgh;glh";
char c[30];
printf("%s\n", a);
printf("%s\n", b);
printf("賦值輸出到 a 數組 %s\n", strcpy(a, b));
printf("賦值輸出到 c 數組 %s\n", strcpy(c, b));
printf("%s\n", b);
return 0 ;
}
/*
* 定義函數:char *strcpy(char *dest, const char *src);
函數說明:strcpy()會將參數src 字符串拷貝至參數dest 所指的地址。
返回值:返回參數dest 的字符串起始地址
*/