1、函數原型(字符串的復制)
#include <stdio.h> char *strcpy(char *s1, const char *s2) //函數的返回值為指向char型的指針, 形參為指向char型的指針 { char *tmp = s1; // 將指針tmp聲明為s1,s1為傳入的字符串數組,相當於指向數組第一個元素的指針。 while(*s1++ = *s2++) //字符串數組*s2依次給字符串數組*s1賦值,當指針指向數組*s2的null元素時,賦值表示的判斷結果為左操作數的值和類型,也就是0,循環終止,實現*s2向*s1的復制。 ; return tmp; //返回指針tmp,也就是指向字符串數組*s1第一個元素的指針(其行為相當於數組本身)。 } int main(void) { char str1[128] = "abcdefg"; char str2[128]; printf("str2: "); scanf("%s", str2); printf("copy result: %s\n", strcpy(str1, str2)); //函數調用時給與的實參是兩個字符串數組,數組名相當於指向數組第一個元素的指針) return 0; }
2、加載strcpy的頭文件,可以直接調用strcpy函數
#include <stdio.h> #include <string.h> //strcpy函數的頭文件 int main(void) { char str1[128] = "abcdefg"; char str2[128]; printf("str2: "); scanf("%s", str2); printf("copy result: %s\n", strcpy(str1, str2)); // 實參為字符串數組名稱,相當於指向數組第一個元素的指針,其行為和數組本身一樣 return 0; }