strcpy(s1,s2); strcpy函數的意思是:把字符串s2拷貝到s1中,連同字符串結束標誌也一同拷貝。如果s2="china",那麼s1中存放的是china\0。
在cout<<s1時,結果是china。
strlen函數的意思是測試字符串的實際字符長度,不含字符串結束標誌。
sizeof是個運算符,它的結果是字符串在內存中所佔的字節大小,要把'\0'算進去。
函數原型一:
char* strcpy(char* a, char* b)
{
while((*(a++)=*(b++)!='0');
return a;
}
void assert( int expression );
assert的作用是現計算表達式 expression ,如果其值爲假(即爲0),那麼它先向stderr打印一條出錯信息,
然後通過調用 abort 來終止程序運行。
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>
#include <string>
using namespace std;
int main()
{
char s1[6]="china";
char 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;
}