prosource

C의 문자 비교

probook 2023. 8. 6. 10:10
반응형

C의 문자 비교

두 문자를 비교하여 하나가 다른 문자보다 큰지 확인하려고 합니다.그들이 동등한지 알아보기 위해, 나는 사용했습니다.strcmp와 비슷한 것이 있습니까?strcmp제가 쓸 수 있을까요?

A char변수는 실제로 8비트 적분 값입니다.값은 다음과 같습니다.0로.255이러한 코드는 거의 항상 ASCII 코드이지만 다른 인코딩이 허용됩니다.0C-null 문자를 나타냅니다.255빈 기호를 나타냅니다.

따라서 다음과 같은 과제를 작성할 때:

char a = 'a'; 

ASC에서 이 작업과 동일합니다.II 시스템.

char a = 97;

그래서, 당신은 두 가지를 비교할 수 있습니다.char변수 사용>,<,==,<=,>=연산자:

char a = 'a';
char b = 'b';

if( a < b ) printf("%c is smaller than %c", a, b);
if( a > b ) printf("%c is smaller than %c", a, b);
if( a == b ) printf("%c is equal to %c", a, b);

ASCII가 필요하지 않더라도 C는 숫자가 연속적으로 정렬되어야 하므로 이 기능이 작동합니다.

int isdigit(char c) {
    if(c >= '0' && c <= '9') 
        return 1;
    return 0;
} 

C에서 문자 유형은 숫자 값을 가지고 있으므로 > 연산자는 예를 들어 정상적으로 작동합니다.

#include <stdio.h>
main() {

    char a='z';

    char b='h';

    if ( a > b ) {
        printf("%c greater than %c\n",a,b);
    }
}

값을 나타내는 두 문자열을 비교하려고 하는 것 같습니다. 찾는 함수는 다음과 같습니다.

int atoi(const char *nptr);

또는

long int strtol(const char *nptr, char **endptr, int base);

다음 함수를 사용하여 문자열을 int/longint로 변환할 수 있습니다.

int val = strtol("555", NULL, 10);

다른 값과 비교합니다.

int main (int argc, char *argv[])
{
    long int val = 0;
    if (argc < 2)
    {
        fprintf(stderr, "Usage: %s number\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    val = strtol(argv[1], NULL, 10);
    printf("%d is %s than 555\n", val, val > 555 ? "bigger" : "smaller");

    return 0;
}

당신은 캐릭터를 비교하는 당신만의 방법을 사용해야 할 것입니다.C 표준은 0부터 9까지의 숫자가 기본값을 사용하여 쉽게 비교할 수 있도록 요구합니다.c1 > c2문체의 비교문자와 같은 다른 문자에 대해서는 작동하지 않습니다. (A-z 및 A-Z와 같은 단순한 ASCII 범위에 대해서는 작동하는 경우가 많습니다.)

한 가지 방법은 문자를 문자열로 변환하여 사용하는 것입니다. 종종 만족스럽지 못합니다.strcoll().

언급URL : https://stackoverflow.com/questions/22736348/char-comparison-in-c

반응형