web-dev-qa-db-ja.com

CでのCharの比較

2つの文字を比較して、一方が他方よりも大きいかどうかを確認しようとしています。それらが等しいかどうかを確認するために、strcmpを使用しました。使用できるstrcmpに似たものはありますか?

12
dclark

char変数は、実際には8ビットの整数値です。 0から255の値があります。これらは ASCIIコード です。 0はC-null文字を表し、255は空のシンボルを表します。

そのため、次の割り当てを作成する場合:

char a = 'a'; 

次と同じです:

char a = 97;

したがって、><==<=>=演算子を使用して、2つの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);
17
Victor

Cでは、char型には数値があるため、たとえば>演算子は問題なく機能します

#include <stdio.h>
main() {

    char a='z';

    char b='h';

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

値を表す2つの文字列を比較しようとしていると思います。探している関数は次のとおりです。

int atoi(const char *nptr);

または

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

これらの関数を使用すると、文字列をint/long intに変換できます。

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;
}
1
Ayman Khamouma