Dlaczego strcpy(3)
(i strncpy(3)
) zwraca pierwszy argument? Nie widzę, jak to dodaje żadnej wartości. Zamiast tego często wolałbym, aby zwrócono liczbę skopiowanych bajtów.C: Dlaczego strcpy zwraca argument?
Dodatek: Co mam zrobić, gdy potrzebuję również długości wynikowego ciągu znaków? Czy naprawdę muszę wdrożyć własną wersję?
Dzięki czemu można go używać w łańcuchach funkcji. –
Byłoby znacznie bardziej przydatne, gdyby wariant 'strcpy()' zwrócił wskaźnik do bajtu '0 \'' na końcu łańcucha. Jednakże, jeśli długość sprawdzasz wszystko przed wykonaniem kopiowania (tak, jak powinno być bezpieczne), możesz użyć 'memmove()' (lub może 'memcpy()') zamiast 'strcpy()'. Dzieje się tak tylko wtedy, gdy nie masz dostępnej długości, która nie może ich użyć, ale prawdopodobnie nie jest bezpieczne wykonywanie kopii, jeśli nie znasz długości łańcucha źródłowego i bufora docelowego. –