찾다

 >  Q&A  >  본문

c++ - 请问 strchrnul的这段解释的详细含义

The strchrnul() function is like strchr() except that if c is notfound in s, then it returns a pointer to the null byte at the end of s, rather than NULL.

这是这里的man page对 strchrnul 的解释. 其中the null byte at the end of s就是指 c 字符串最后的那个\0吗? 我不是很确定 谢谢啦

ringa_leeringa_lee2807일 전1110

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 15:26:50

    정확하게 이해하셨습니다.
    일반적인 개념은 strchrnul과 strchr 사이에는 단 하나의 차이점이 있다는 것입니다. strchr은 c를 찾을 수 없을 때 NULL을 반환하고 strchrnul은 문자열 끝에 있는 주소를 반환합니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 15:26:50

    <…

    David Bowlingstrchr() 함수는 문자열 내에서 문자가 처음 나타나는 위치에 대한 포인터를 반환하거나 해당 문자가 문자열에 없으면 null 포인터를 반환합니다. 따라서 정의되지 않은 동작을 방지하려면 먼저 null 포인터인지 확인하지 않고 strchr()의 반환 값을 역참조해서는 안 됩니다. 또한 strchr()의 반환 값은 해당 문자가 문자열 내에 없으면 정보를 전달하지 않습니다.

    strchrnul() 함수는 몇 가지 면에서 strchr()과 다릅니다. 첫째, strchr()은 표준 라이브러리 함수인 반면 strchrnul()은 그렇지 않고 대신 glibc 2.1.1 이후 GNU 확장입니다. 이 기능을 활성화하려면 기능 테스트 매크로 _GNU_SOURCE를 정의해야 할 수도 있습니다. 둘째, strchrnul()은 문자열에서 문자가 처음 나타나는 위치에 대한 포인터를 반환하지만 해당 문자가 문자열에 없으면 null 종결자 0에 대한 포인터가 반환됩니다. 따라서 strchrnul()에서 반환 값을 역참조하는 것이 항상 안전합니다. 또한 문자열에 해당 문자가 없으면 반환 값에는 문자열의 끝을 가리킨다는 점에서 일부 정보가 포함됩니다.

    "널 바이트 종료"라는 문구 정보: C 문자열은 문자열의 마지막 문자가 널 바이트라는 특수 속성을 가진 문자 배열입니다. 물론 C에서 char의 너비는 1바이트로 보장됩니다. 널 바이트는 문자 리터럴 '0'으로 표시되지만 때로는 널 종결자 또는 NUL 종결자라고도 합니다(이 이름은 실제로 구체적이지만) 인코딩에 적용되지만 ASCII 및 EBCDIC에는 존재합니다). 표준에서는 다음과 같이 말합니다.

    C11 §5.2.1 2

    널 문자라고 불리는 모든 비트가 0으로 설정된 바이트는 기본 실행 문자 집합에 존재해야 합니다. 문자열을 종료하는 데 사용됩니다.

    지역:

    회신하다
    0
  • 취소회신하다