sourcecode

C 문자열이 비어 있는지 확인하는 방법

copyscript 2022. 8. 16. 23:34
반응형

C 문자열이 비어 있는지 확인하는 방법

C에 어떤 문자열이 비어 있는지 확인해야 하는 아주 작은 프로그램을 쓰고 있습니다.이 질문을 위해 코드를 단순화했습니다.

#include <stdio.h>
#include <string>

int main() {
  char url[63] = {'\0'};
  do {
    printf("Enter a URL: ");
    scanf("%s", url);
    printf("%s", url);
  } while (/*what should I put in here?*/);

  return(0);
}

사용자가 아무것도 입력하지 않고 enter만 누르면 프로그램이 루프를 멈추길 원합니다.

C 스타일 문자열은 항상 늘 문자로 끝납니다( ).\0)에 기입하면 문자열이 비어 있는지 여부를 확인할 수 있습니다.

do {
   ...
} while (url[0] != '\0');

또는 다음 명령어를 사용할 수도 있습니다.strcmp이 함수는 오버킬이지만 읽기 쉬울 수 있습니다.

do {
   ...
} while (strcmp(url, ""));

주의:strcmp문자열이 다르면 0이 아닌 값을 반환하고 같은 문자열이면 0이 반환되므로 이 루프는 문자열이 비어 있지 않을 때까지 계속 반복됩니다.

이게 도움이 됐으면 좋겠네요!

문자열이 비어 있는지 확인하는 경우:

if (str[0] == '\0')
{
    // your code here
}

이를 위한 가장 빠른 방법은 다음과 같습니다.

do {
    // Something
} while (*url);

기본적으로는*url배열의 첫 번째 위치에 있는 문자를 반환합니다.C 문자열은 늘 종단되므로 문자열이 비어 있으면 첫 번째 위치가 문자가 됩니다.'\0'ASCII 값은0C 논리문은 모든 제로 값을 다음과 같이 취급하기 때문에false이 루프는 스트링의 첫 번째 위치가 비어 있지 않은 동안 계속 진행됩니다.

이를 더 잘 이해하려면 권장되는 판독치:

strlen(url)

문자열 길이를 반환합니다.NULL 바이트가 발견될 때까지 모든 문자를 카운트합니다.이 경우 0과 대조하여 확인합니다.

또는 다음을 사용하여 수동으로 확인할 수 있습니다.

*url == '\0'

이 매크로를 적어놨습니다.

#define IS_EMPTY_STR(X) ( (1 / (sizeof(X[0]) == 1))/*type check*/ && !(X[0])/*content check*/)

그렇겠지

while (! IS_EMPTY_STR(url));

이 매크로의 장점은 타입이 안전하다는 것입니다.문자 포인터 이외의 것을 입력하면 컴파일 오류가 발생합니다.

반환값은 다음에서 확인할 수 있습니다.scanf이 코드는 문자열을 수신할 때까지 그대로 있습니다.

int a;

do {
  // other code
  a = scanf("%s", url);

} while (a <= 0);

만약에 첫 번째 캐릭터가'\0', 빈 문자열이 있습니다.

다음과 같이 해야 합니다.

do {
    /* 
    *   Resetting first character before getting input.
    */
    url[0] = '\0';

    // code
} while (url[0] != '\0');

일반적으로 여기서 빈 문자열을 얻는 데 어려움이 있을 것입니다.%s공백(스페이스, 탭, 줄 바꿈)을 무시합니다.그래도 실제로 성공한 매치 수를 반환합니다.

man 페이지부터:

일치 및 할당에 성공한 입력 항목의 수. 이는 제공된 것보다 적을 수 있으며 조기 일치 실패 시 0일 수도 있습니다.

든 빈.ctrl+z예를 들어) 반환 결과를 확인할 수 있습니다.

int count = 0;
do {
  ...
  count = scanf("%62s", url);  // You should check return values and limit the 
                               // input length
  ...
} while (count <= 0)

드린 이기 때문에 을 덜 합니다.-1 페이지에 나와 있습니다.

첫 번째 변환이 성공하거나 일치하는 오류가 발생하기 전에 입력이 종료되면 값 EOF가 반환됩니다.읽기 에러가 발생했을 경우에도 EOF가 반환됩니다.이 경우 스트림의 에러 인디케이터(ferror(3) 참조)가 설정되어 errno가 설정되어 있으면 에러가 표시됩니다.

strtok을 사용하면 "if (strtok(s), \t)==SJB"라는 한 줄만으로 수행할 수 있습니다.예를 들어 다음과 같습니다.

#include <stdio.h>
#include <string.h>

int is_whitespace(char *s) {
    if (strtok(s," \t")==NULL) {
        return 1;
    } else {
        return 0;
    }
}

void demo(void) {
    char s1[128];
    char s2[128];
    strcpy(s1,"   abc  \t ");
    strcpy(s2,"    \t   ");
    printf("s1 = \"%s\"\n", s1);
    printf("s2 = \"%s\"\n", s2);
    printf("is_whitespace(s1)=%d\n",is_whitespace(s1));
    printf("is_whitespace(s2)=%d\n",is_whitespace(s2));
}

int main() {
    char url[63] = {'\0'};
    do {
        printf("Enter a URL: ");
        scanf("%s", url);
        printf("url='%s'\n", url);
    } while (is_whitespace(url));
    return 0;
}

다음과 같이 시도할 수 있습니다.

if (string[0] == '\0') {
}

이 경우 다음과 같은 경우가 있습니다.

do {
   ...
} while (url[0] != '\0')

;

" " 를 합니다.scanf()fgets()

do {
    if (!fgets(url, sizeof url, stdin)) /* error */;
    /* ... */
} while (*url != '\n');

그것은 매우 간단하다.상태일 때 문자열이 비어 있는지 확인합니다.

  1. strlen 함수를 사용하여 문자열 길이를 확인할 수 있습니다.

    #include<stdio.h>
    #include <string.h>   
    
    int main()
    {
        char url[63] = {'\0'};
        do
        {
            printf("Enter a URL: ");
            scanf("%s", url);
            printf("%s", url);
        } while (strlen(url)<=0);
        return(0);
    }
    
  2. 첫 번째 문자가 '\0'인지 확인합니다.

    #include <stdio.h>    
    #include <string.h>
    
    int main()
    {        
        char url[63] = {'\0'};
    
        do
        {
            printf("Enter a URL: ");
            scanf("%s", url);
            printf("%s", url);
        } while (url[0]=='\0');
    
        return(0);
    }
    

참고하시기 바랍니다.

C:
https://www.javatpoint.com/c-arrayhttpswww..com/c-array
https://scholarsoul.com/arrays-in-c/httpsscholarsoul.com//

C:
https://www.programiz.com/c-programming/c-stringshttpswww.programiz.com//c-strings
https://scholarsoul.com/string-in-c/httpsscholarsoul.com//
https://en.wikipedia.org/wiki/C_string_handlinghttpsen.wikipedia.org/wiki/

확인 및 요약:

  • c c c c c c c c c c c c c 。
    • url[0] == '\0'
    • strlen(url) == 0
    • strcmp(url, "") == 0
  • C " " " Not Emptempty '
    • url[0] != '\0'
    • strlen(url) > 0
    • strcmp(url, "") != 0

언급URL : https://stackoverflow.com/questions/15485179/how-to-check-if-c-string-is-empty

반응형