程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 字符串函數---strcpy()與strncpy()詳解及實現

字符串函數---strcpy()與strncpy()詳解及實現

編輯:C++入門知識

字符串函數---strcpy()與strncpy()詳解及實現


一、strcpy()與strncpy()

strcpy():strcpy(dest,src); strcpy把src所指向以'\0'結尾的字符串復制到dest所指的數組中,返回指向dest的指針。

當sizeof(dest)>=sizeof(src)時,拷貝正確,並在dest字符串後面加入'\0';

當sizeof(dest)


strncpy():strncpy(dest,src,n); strncpy把src所指向以'\0'結尾的字符串的前n個字符復制到dest所指的數組中,返回指向dest的指針。

當n>=sizeof(src)時,拷貝正確,並在dest字符串後面加入'\0';

當n


示例代碼:

#include
#include

using namespace std;

int main()
{
	char a[]="lanzhihui is a good boy!";

	//以下strcpy
	char b[30];
	char c[30];
	char d[30];

	strcpy(b,a);  //strcpy進行簡單的拷貝,除了拷貝a數組的字符串外,還會將a數組後面的'\0'拷貝給數組b.

	cout<<"b:"<=sizeof(a) 時,正確拷貝,並在數組b字符串後加'\0'。
	                    //當數組b的存儲空間 sizeof(b)=sizeof(a) 時,正確拷貝,
	strncpy(g,a,10);         //拷貝a中前9個字符到g中,必須手動為g數組加入'\0'
	g[9]='\0';              //n


\


舉例理解strcpy()與strncpy()函數拷貝以 '\0' 結束:

#include
#include

using namespace std;

int main()
{
	char s[]="lanzhihui\0 is a good boy!";
	char name[30];

	strcpy(name,s);//拷貝以'\0'結束

	cout<
\

二、strcpy()與strncpy()實現

根據對strcpy()與strncpy()函數功能的測試,寫出實現的代碼:

#include
#include
#include

using namespace std;

char *strcpy_m(char *dest,const char *str)  
{  
    assert((dest!=NULL)&&(str!=NULL));
	char *cp=dest;
    while((*cp++=*str++)!='\0')
	{
		//
	}
	return dest;
}  

char *strncpy_m(char *dest,const char *str,int n)
{
	assert((dest!=NULL)&&(str!=NULL));
	char *cp=dest;
	while(n&&(*cp++=*str++)!='\0')
	{
		n--;
	}
	if(n)
	{
		while(--n)
		*cp++='\0';
	}
	return dest;
}

int main()
{
	char a[]="lanzhihui is a good boy!";

	//以下strcpy_m
	char b[30];
	char c[30];
	char d[30];

	strcpy_m(b,a);  

	cout<<"b:"<\

可見自己寫的strcpy_m()函數與strncpy_m()函數與庫函數運行結果一樣。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved