Почему strcpy(3)
(и strncpy(3)
) возвращает свой первый аргумент? Я не вижу, как это добавляет какую-либо ценность. Вместо этого часто я предпочитаю возвращать количество скопированных байтов.C: Почему strcpy возвращает свой аргумент?
Добавление: Что я должен делать, когда мне нужна длина результирующей строки? Действительно ли мне нужно реализовать свою собственную версию?
Чтобы его можно было использовать в цепочке функций. –
Было бы гораздо полезнее, если бы вариант 'strcpy()' возвращал указатель на '' \ 0'' байт в конце строки. Тем не менее, если вы проверяете все до того, как копируете (как и должны быть в безопасности), вы можете использовать 'memmove()' (или, возможно, 'memcpy()') вместо 'strcpy()'. Это происходит только тогда, когда у вас нет доступной длины, которая не может их использовать, но, возможно, небезопасно выполнять копирование, если вы не знаете длины исходной строки и целевого буфера. –