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;
- }
執行結果
沒有留言:
發佈留言