Skąd się wzięła nazwa funkcji strcspn()?

0

Istnieje strspn() co ma oznaczać jak rozumiem "string span"? A strcspn() jest w pewnym sensie odwrotnością tej funkcji, i co ma oznaczać to c?

6

strcspn – span the complement of a string ( manual )

2

znaczy pewnie tyle, że jak wymyślano bibliotekę standardową C, to programiści nie mieli autocomplete i musieli wymyślać tak skrótowe nazwy, że archeologowie odkopujący ten język po kilku dekadach się zastanawiają, co to mogło znaczyć. Z tego, co widzę, jeszcze jest coś takiego jak memccpy i tam c to chyba character https://man7.org/linux/man-pages/man3/memccpy.3.html

0
LukeJL napisał(a):

znaczy pewnie tyle, że jak wymyślano bibliotekę standardową C, to programiści nie mieli autocomplete i musieli wymyślać tak skrótowe nazwy, że archeologowie odkopujący ten język po kilku dekadach się zastanawiają, co to mogło znaczyć. Z tego, co widzę, jeszcze jest coś takiego jak memccpy i tam c to chyba character https://man7.org/linux/man-pages/man3/memccpy.3.html

No nie wiem, to czemu nie jest strcpy i strccpy?

2

jak spojrzałem w stackoverflow to nawet ciężko ustalić dokładną historię strcpy. Można powiedzieć że gdzieś w latach 70-tych się pojawiła. Czytaj nikt nie ma pojęcia. Jak pojawił się standard to już była dostępna. Raczej nie da się odpowiedzieć na to pytanie.

3

strcpy - była jeszcze w "pierwobytnym" K&R C, więc można powiedzieć że przed jakimkolwiek standardem.

2
LukeJL napisał(a):

znaczy pewnie tyle, że jak wymyślano bibliotekę standardową C, to programiści nie mieli autocomplete i musieli wymyślać tak skrótowe nazwy, że archeologowie odkopujący ten język po kilku dekadach się zastanawiają, co to mogło znaczyć. Z tego, co widzę, jeszcze jest coś takiego jak memccpy i tam c to chyba character https://man7.org/linux/man-pages/man3/memccpy.3.html

Słyszałem że Stare kompilatory miały ograniczenia na ilość znaków dlatego te funkcje są tak krótkie. Zaszłości sprzed 40 lat XD

0

w Bashu jeszcze są krótsze komendy: ls, rm, mv
ale to podobno, żeby szybciej się to pisało przez dalekopisy: https://www.makeuseof.com/why-are-linux-commands-so-short/

0

No czyli mamy dwie hipotezy

  • Była funkcja memccpy, w której c znaczyło "character", i ktoś chciał zrobić kopię tej funkcji, ale strccpy już było, więc nazwał ją strcspn?
  • Była strspn, i ktoś chciał zrobić odwrotną funkcję więc nazwał ją strcspn(), tylko co to jest to c?
4
Riddle napisał(a):

No czyli mamy dwie hipotezy

  • Była funkcja memccpy, w której c znaczyło "character", i ktoś chciał zrobić kopię tej funkcji, ale strccpy już było, więc nazwał ją strcspn?
  • Była strspn, i ktoś chciał zrobić odwrotną funkcję więc nazwał ją strcspn(), tylko co to jest to c?

Nie! strcpy - kopiuje tak samo jak memcpy
Natomiast strspn szuka pasujące znaki, zaś strcspn szuka niepasujące znaki zaś wg:

ksh napisał(a):

strcspn – span the complement of a string ( manual )

więc c == complement

1

tu też piszą, że complement:
https://www.gnu.org/software/libc/manual/pdf/libc.pdf
strona 123
The strcspn (“string complement span”) function

0

To jest i tak dopiero amatorka. Pobawcie się w archeologię funkcji COMowych albo WINapi a najlepiej w starym komercyjnym projekcie napisanym przez nie powiem kogo.
Ehhh kiedyś to było.

0

"counter" może, jako przeciwieństwo, jak w "counter-clockwise".

0
Manna5 napisał(a):

"counter" może, jako przeciwieństwo, jak w "counter-clockwise".

Masz tą informację skądś, czy zgadujesz? Bo jak zgadujesz to ja dziękuję za taką "informacje", sam mogę sobie wymyślić słowa które zaczynają się na c.

0
Riddle napisał(a):

Istnieje strspn() co ma oznaczać jak rozumiem "string span"? A strcspn() jest w pewnym sensie odwrotnością tej funkcji, i co ma oznaczać to c?

W/g dokumentacji strcspn "returning the number of characters". Czyli c jak counter (licznik). spn to span, ale to już wyjaśniono.

1 użytkowników online, w tym zalogowanych: 0, gości: 1