strnlen()
기능은 여러 가지 주목할만한 라이브러리에 잠시 추가되었으며 이후에 POSIX-1:2008과 같은 표준으로 변경되었습니다. IIUC의 목적은 제목 문자열이 끝이 아닌 경우 문제를 피하는 것입니다.왜 strnspn()도 strncspn()도 없습니까?
그러나 이와 유사한 잠재적 문제가 제기 될 수도 있음에도 불구하고 유사한 변형이 개발 된 것으로 보이지 않습니다. 베이스가 strspn()
과 strcspn()
이 많은 C 프로그래머의 이해를 넘어서서 사용되지 않거나 사용할 수없는 것으로 가정 되었기 때문입니까?
하나는 유명한 "보안이 강화 된"문자열 함수의 변종 (별관-K 또는 M's-확장 일명)가 더 strcspn_s()
도 strspn_s()
중 하나 없습니다 ... (에)
제 생각에는 이러한 제안 된 함수는 memspn() 및 memcspn()이라고해야합니다. memcpy()와 memcmp() 및 memmem()에 맞춰 유지하십시오. – wildplasser
@wildplasser : 흥미 롭습니다. 's1'을위한'void *'(+ count)의 혼합에도 불구하고 여전히'char *'이 될's2'와 반대되는 것으로 생각됩니다. 또한 s2의'\ 0 '을 종료하는 것이 * span *의 일부로 간주 될 수 있기 때문에'memspn()'에 더 적합하지만'memcspn()'에서는 덜 분명합니다. – AntoineL
@wildplasser :'mem *'함수는 지정된 바이트 수에 도달하면 종료되고 '\\'문자는 특별히 처리하지 않습니다. 'strn *'함수는 지정된 바이트 수 * 또는' '\ 0'종결자가 도달하면 종료됩니다 (대부분, ['strncpy'] (http : //the-flat-trantor-society.blogspot .com/2013/12/where-should-control-key-be.html)은 다소 혼란 스럽습니다. –