1. 程式人生 > >strcpy函式的用法,strlen,sizeof區別

strcpy函式的用法,strlen,sizeof區別

strcpy(s1,s2);strcpy函式的意思是:把字串s2中的內容copy到s1中,連字串結束標誌也一起copy.
這樣s1在記憶體中的存放為:ch\0;
cout<<s1<<endl時,結果為ch;事實上,在記憶體裡面是這樣的儲存結構:ch\0na
如果說s1的長度是6,那是錯誤的.你沒有弄清strlen與sizeof的意思。
strlen函式的意思是測試字串的字元長度,不含字串結束標誌的。
sizeof是個運算子,它的結果是字串在記憶體中的所佔位元組大小,它要把\0算進去的。
strcpy函式原型1
char * strcpy(char *a,char *b)
{ while(((a++)=

(b++))!=0);return a;}
strcpy函式原型2
char *strcpy(char *strDest, const char *strSrc);//strDest為目標,strSrc為源
{
assert((strDest!=NULL) && (strSrc !=NULL)); //如果兩個為空則不用複製,直接中止
char *address = strDest; //用address指向strDest開始地址
while( (strDest++ = strSrc++) != ‘\0’ ) //複製,直到源串結束;
NULL ; //空操作
return address ; //返回strDest開始地址
}
}//就這個演算法看來是多餘.

```
`include <iostream>
using namespace std;
int main(int argc,char *argv[])
{
char s1[6]="china" ,s2[3]="ch";
cout<<
s1<<endl;                    //china
cout<<strlen(s1)<<endl;         //5
cout<<sizeof(s1)<<endl;         //6
strcpy(s1,s2);
cout<<s1<<endl;                    //ch
for (int i=0;i<5;i++) { cout<<s1[i]<<endl; } cout<<strlen(s1)<<endl; //2 cout<<sizeof(s1)<<endl; //6 return 0; }
```