どのように私は、文字列の中から整数を抽出することができますか?

Ramux05:

私は、割り当てに取り組んだし、それの一部として、私は、文字列から整数を抽出する必要があります。

私が使って試したatoi()機能を、それは常に返し0、そう、私はまで切り替えstrtol()、それはまだ返します0

目標は、文字列から整数を抽出し、別の関数に引数として渡す方法です。私は、(いくつかのデータを更新するために、これらの値を使用する関数を使用していますupdate_stats)。

私はC言語でのプログラミングにかなり新しいんだけど、これは私の試みであったことを覚えておいてください。

void get_number (char str[]) {
    char *end;
    int num;
    num = strtol(str, &end, 10);
    update_stats(num);
    num = strtol(end, &end, 10);
    update_stats(num);
}

この目的は、文字列である"e5 d8"(例えば)I抽出物であろう58、その文字列から。

文字列の形式は常に同じです。

これどうやってするの?

言います、

strtolいない見つける文字列の数を。それは数に変換した文字列の先頭に(それは空白が、他には何をスキップしません。)

番号が始まる場所を見つける必要がある場合は、のようなものを使用することができます。

const char* nump = strpbrk(str, "0123456789");
if (nump == NULL) /* No number, handle error*/

man strpbrk

あなたの番号が署名する可能性がある場合は、もう少し洗練された何かをする必要があります。一つの方法は、前の文字がある場合は、上記した後、バックアップ一文字を行うことです-しかし、文字列の先頭に気を付けます:

if ( nump != str && nump[-1] == '-') --nump;

ただ、パッティング-strpbrkのような入力に誤った一致を生成する引数non-numeric7

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=370172&siteId=1