簡體   English   中英

C:為什么strcpy返回其參數?

[英]C: Why does strcpy return its argument?

為什么strcpy(3) (和strncpy(3) )返回第一個參數? 我看不出這如何增加任何價值。 取而代之的是,我經常希望返回復制的字節數。

附錄:當我還需要生成的字符串的長度時該怎么辦? 我真的必須實現自己的版本嗎?

由於歷史原因。 strcpy和朋友可以追溯到70年代初,我想返回值的預期用例將是一種鏈接:

// copy src into buf1 and buf2 in a single expression
strcpy(buf1, strcpy(buf2, src));

要么

char *temp = xmalloc(strlen(const_str) + 1);
function_that_takes_mutable_str(strcpy(temp, const_str));

這樣你就可以做

char * str = strcpy(malloc(12), "MyNewString");

C庫中的大多數字符串函數都是由業余愛好者設計的。 例如,在我職業生涯的25年中,我從未使用過strcat()函數,但是我一直都在連接字符串。 另外,如果您認為printf(),則如果為%s參數傳遞NULL,則幾乎沒有文檔。 對於%c傳遞'\\ 0'或malloc(0)的情況也是如此。

可悲的是,最有用的strcpy()應該返回一個指向目標緩沖區末尾的指針以進行鏈復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM