strcpy和strncpy
char * __cdecl strcpy(char * dst, const char * src)
{
??????? char * cp = dst;
??????? while( *cp++ = *src++ );
??????? return( dst );
}
strcpy
源字串全部拷貝到目標(biāo)字串中,包括'\0',(但是程序員必須保證目標(biāo)串長(zhǎng)度足夠,且不與源串重疊)
strncpy
只拷貝指定長(zhǎng),源不足補(bǔ)\0;
如果目標(biāo)長(zhǎng)>=指定長(zhǎng)>源長(zhǎng),則將源串全部拷貝到目標(biāo)串,連同'\0'
如果指定長(zhǎng)<源長(zhǎng),則將截取源串中按指定長(zhǎng)度拷貝到目標(biāo)字符串,不包括'\0'
如果指定長(zhǎng)>目標(biāo)長(zhǎng),錯(cuò)誤!
//源 <= 目標(biāo)
char*p="123456789";?
char name1[12]="aaaaaaaaaaa",
char name2[12]="bbbbbbbbbbb";
strcpy(name1,p);???
//遇空字符結(jié)束,結(jié)果追加1個(gè)空字符:123456789\0?
strncpy(name2,p,5);?
//若n>=源,則不足的部分填充\0,結(jié)果:123456789\0\0\0
??????? //若n<源例如=5,則只拷貝5個(gè)字符,結(jié)果:12345bbbbbb\0
總結(jié)
以上是生活随笔為你收集整理的strcpy和strncpy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: malloc,calloc和reallo
- 下一篇: B树,B+树