[英]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.