programing

char* 변수가 빈 문자열을 가리키는지 확인하려면 어떻게 해야 합니까?

itsource 2022. 7. 21. 19:58
반응형

char* 변수가 빈 문자열을 가리키는지 확인하려면 어떻게 해야 합니까?

어떻게 하면 확인할 수 있는 방법char*변수가 빈 문자열을 가리킵니다.

첫 번째 문자가 '\0'인지 확인합니다.포인터가 NULL인지도 확인해야 합니다.

char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
   printf("c is empty\n");
}

이 두 가지 체크 모두 편리하고 재사용하기 쉬운 기능에 넣을 수 있습니다.

편집: if 스테이트먼트는 다음과 같이 읽을 수 있습니다.c가 0이 아니고 문자 배열 c의 첫 글자가 "\0" 또는 "0"이 아닌 경우..".

&&단순히 두 조건을 결합합니다.기본적으로 다음과 같습니다.

if (c != NULL) { /* AND (or &&) */
    if (c[0] == '\0') {
        printf("c is empty\n");
    }
}

명확하지 않다면 좋은 C 프로그래밍 책을 구해야 할 것입니다.나는 "C 프로그래밍 언어"라는 책을 추천할 수 있다.

위와 같은 가장 짧은 버전은 다음과 같습니다.

if (c && !c[0]) {
  printf("c is empty\n");
}

원하는 방법:

if (*ptr == 0) // empty string

아마도 더 일반적일 것입니다.

if (strlen(ptr) == 0) // empty string
if (!*ptr) { /* empty string  */}

유사하게

if (*ptr)  { /* not empty */ }

라이브러리 기능이 가장 잘 구현되어 있기 때문에 strlen 함수를 사용하고 싶습니다.

그래서 if(strlen(p)==0) // 빈 문자열로 씁니다.

빈 문자열에는 1개의 null 바이트가 있습니다.그래서 테스트if (s[0] == (char)0)

포인터를 확인합니다.NULL그 후 를 사용하여strlen다시 돌아올지 어떨지0.
NULL통과하기 때문에 체크는 중요하다.NULL에의 포인터.strlen정의되지 않은 동작을 호출합니다.

기회를 주세요.

함수 gets(string)를 통해 문자열을 가져온 다음 if(string[0] == '\0')로 조건을 확인하십시오.

언급URL : https://stackoverflow.com/questions/7970617/how-can-i-check-if-char-variable-points-to-empty-string

반응형