1. ホーム
  2. c

[解決済み] 文字列が数字かどうかを確認するには?

2022-03-04 14:45:58

質問

このコードで文字列が数字かどうかを調べたいのですが、どうすればいいですか?文字列のすべての文字が整数であることをチェックしなければならないのですが、whileは常にisDigit = 1を返します。なぜそのifが動作しないのかわかりません。

char tmp[16];
scanf("%s", tmp);

int isDigit = 0;
int j=0;
while(j<strlen(tmp) && isDigit == 0){
  if(tmp[j] > 57 && tmp[j] < 48)
    isDigit = 0;
  else
    isDigit = 1;
  j++;
}

解決方法は?

ASCIIコードチェックはやめて isdigit または isnumber (参照 man isnumber ). 最初の関数は文字が 0-9 かどうかをチェックし、2 番目の関数は現在のロケールに依存する他のさまざまな数字文字も受け付ける。

重要なのは、「数値文字列」の正確な定義は特定のロケールと文字列エンコーディングに依存するため、これは見た目よりも少し複雑だということです。