-1

char 配列があり、そこから最初の数値を取得したいと考えています。

たとえば、char 配列が 34 400 43 33 の場合、int のように 34 が必要です。

int FirstInt(char chars[])
{
    return atoi(chars.substr(0, bursts.find(' ')));
}

私はこのようなことを考えていましたが、それは有効ではありません。何か案は?

4

2 に答える 2

3
int FirstInt(char chars[])
{
    int x;
    sscanf(chars, "%d", &x);
    return x;
}
于 2012-10-23T16:18:07.373 に答える
2

最初の数字だけが必要な場合は、文字列をトークン化したり、sscanf を使用したりする必要はありません。

return atoi(str);

マニュアルページから

atoi() 関数は、nptr が指す文字列の最初の部分を int に変換します。

つまり、空白などの数字以外の文字が見つかると停止します。

編集: 一部の実装ではエラー時に 0 を返し、errno (AFAIK) を設定しないため、atoi でエラーを検出することは不可能であることに注意してください。したがって、おそらくstrtolを使用することをお勧めします。 このリンクConverting Strings to Numbersを参照してください。

于 2012-10-23T16:21:08.057 に答える