Tại sao strcpy(3)
(và strncpy(3)
) trả lại đối số đầu tiên của họ? Tôi không thấy cách này thêm bất kỳ giá trị nào. Thay vào đó, thường xuyên tôi muốn có số byte được sao chép trả về.C: Tại sao strcpy trả về đối số của nó?
Phụ lục: Tôi phải làm gì khi tôi cũng cần độ dài của chuỗi kết quả? Tôi có thực sự phải triển khai phiên bản của riêng mình không?
Vì vậy, nó có thể được sử dụng trong chuỗi chức năng. –
Sẽ hữu ích hơn nhiều nếu một biến thể của 'strcpy()' trả về một con trỏ tới byte ''\ 0'' ở cuối chuỗi. Tuy nhiên, nếu bạn kiểm tra mọi thứ trước khi thực hiện sao chép (bạn nên an toàn), bạn có thể sử dụng 'memmove()' (hoặc có thể 'memcpy()') thay vì 'strcpy()'. Đó là chỉ khi bạn không có một chiều dài có sẵn mà không thể sử dụng những người, nhưng nó được cho là không an toàn để làm việc sao chép nếu bạn không biết độ dài của chuỗi nguồn và bộ đệm mục tiêu. –