char *strcpy(char * __restrict__string1, const char * __restrict__string2);
功能:複製字串2到字串1中
注意:字串結尾需含結束字元
以下會以三種情境,會有範例程式碼及執行結果
- string2長度與string1相同
- string2長度大於string1(要特別注意)
- string2長度小於string1
string2長度與string1相同
程式碼
#include <stdio.h> #include <string.h> char string1[] = "string1"; char string2[] = "string2"; int main(void) { int result = 0; printf("Before strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n\n",string2); strcpy(string1,string2); printf("After strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n",string2); return 0; }
執行結果
string2長度大於string1
程式碼
#include <stdio.h> #include <string.h> char string1[] = "string1"; char string2[] = "hello world"; int main(void) { int result = 0; printf("Before strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n\n",string2); strcpy(string1,string2); printf("After strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n",string2); return 0; }
執行結果
此處會發現string2印出來的結果異常。由於在編譯期間string1的大小其實已經被配置了8個bytes含'\0',而string配置了12個bytes含'\0',執行strcpy後string2被覆蓋的緣故。
string2長度小於string1
程式碼
#include <stdio.h> #include <string.h> char string1[] = "string1"; char string2[] = "hello"; int main(void) { int result = 0; printf("Before strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n\n",string2); strcpy(string1,string2); printf("After strcpy\n"); printf("string1:%s\n",string1); printf("string2:%s\n",string2); return 0; }
執行結果
沒有留言:
發佈留言