當前位置:首頁 » 操作系統 » strcpy源碼

strcpy源碼

發布時間: 2022-07-21 09:30:30

1. 這段代碼有什麼問題

原型:extern char *strcpy(char *dest,char *src);
用法:#include <string.h>
功能:把src所指由NULL結束的字元串復制到dest所指的數組中。
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字元串。
返回指向dest的指針。
給一個很經典版本的strcpy函數源碼
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != 『\0』 )
NULL ;
return address ;
}

你的b溢出了。把長度改成6,或者……這樣寫:
char b[]="china";
這樣寫也可以。

2. 如何使用strcpy()函數

這個就是字元串復制的字思!
strcpy(字元串一,字元串二);就是把字元串一的內容復制給字元串二!
字元串一,二也可以用字元串數組名代替!

3. strcpy函數可以不返回指針嗎解決了追加分,

先汗一個,strcpy函數是一個庫函數,他就在哪裡,不會因為你的意願而改變。除非你不用這個庫函數,自己寫一個
我明白你的意思,你是想問既然這個函數有返回值為什麼你這個程序的strcpy(name,na);沒有接受返回值是吧?先說第一點,函數有返回值沒人強逼你接受,你首先要明白函數的返回值是干什麼的,這個返回值對你有用沒,你有必要浪費一塊內存來存這個返回值沒。
strcpy的功能是復制第二個參數內容到第一個參數中(第一個參數必須有足夠的內存來接受第二個參數)然後返回第一個參數的地址。你這個程序中第一個參數的地址是你的私有變數name,既然已經有了當然沒必要再存了。
當然,本人一直以為這個返回值沒用,我以前看過林銳的書,他介紹過這個函數為什麼要返回值,我記得他好像是說這個返回值沒什麼用,只是讓程序設計更靈活才這樣用的。所以一般不用理他這個返回值。另外據說這個是strcpy的源碼:
/***
*char *strcpy(dst, src) - one string over another
*
*Purpose:
* Copies the string src into the spot specified by
* dest; assumes enough room.
*
*Entry:
* char * dst - string over which "src" is to be copied
* const char * src - string to be copied over "dst"
*
*Exit:
* The address of "dst"
*
*Exceptions:
*******************************************************************************/

char * __cdecl strcpy(char * dst, const char * src)
{
char * cp = dst;

while( *cp++ = *src++ )
; /* Copy src over dst */

return( dst );
}
超級簡單,看一下你就明白了

4. 菜鳥關於strcpy的疑問。。。。。。。。

因為c語言中的字元串末尾隱含了一個結束符'\0',p的實際值是how are you ?'\0',strcpy時,末尾的'\0'也被寫到name里去了,覆蓋掉了ABCDEFGHIJKLMN,後面的OPQRS確實還在,但printf看到第14個字元是'\0'時,就認為前面13個字元how are you ?是一個完整的字元串了。

5. 編寫函數實現strcpy功能,內有詳細要求(已有源代碼,需改正)

#include<iostream.h>
char *ZhanJie(char *a,char *b)//銜接函數
{
char *a1=a;
while((*a1)!='\0')//到達指定銜接位置
{
//調試語句cout<<"循環次數"<<endl;
a1++;
}

while( (*a1++ = *b++) != '\0' );//開始銜接

return a;
}

void main()
{
//要在m後寫數據,m空間不夠或為只讀屬性時,程序會出錯的.
char *m=(char*)malloc(100);
strcpy( m , "grge" );
char *n="fghjr";
char *c;
cout<<m<<endl;
cout<<n<<endl;
c=ZhanJie(m,n);
cout<<c<<endl;
free( m );
}

最後說一下這是strcat

6. 關於c語言的問題:編一個程序實現strcpy的功能

因為長度包括後面的\0 在循環里復制內容結束符號一起復制

熱點內容
go語言編譯模式 發布:2025-01-20 19:57:25 瀏覽:405
超能編程 發布:2025-01-20 19:56:26 瀏覽:1000
安卓手機怎麼連藍牙汽車 發布:2025-01-20 19:39:05 瀏覽:253
保定軍工存儲廠家 發布:2025-01-20 19:38:53 瀏覽:795
雲伺服器ecs服務條款 發布:2025-01-20 19:19:36 瀏覽:47
安卓系統顯示屏怎麼設置屏保 發布:2025-01-20 19:18:53 瀏覽:896
有鎖機和配置鎖哪個好 發布:2025-01-20 19:18:05 瀏覽:767
安卓版軟體如何設置 發布:2025-01-20 18:58:53 瀏覽:58
java中級項目案例 發布:2025-01-20 18:58:52 瀏覽:913
sql日誌查看工具 發布:2025-01-20 18:57:12 瀏覽:243