私は割り当てに取り組んでおり、その一部として文字列から整数を抽出する必要があります。
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"
(たとえば)私はその文字列から5
とを抽出8
します。
文字列の形式は常に同じです。
これどうやってするの?
isdigit
前に数字以外のすべての文字をスキップすることができますstrtol
atoi
をstrtol
期待しています。ポインタはすでに数字を指している必要があります。基数が10の場合、「e」も「d」も数字ではありません。文字列内の数字を見つけるには、各文字を調べて数字かどうかを判断するコードを記述する必要があります。数字を見つけたら、必要に応じて、その数字(1桁のみ)または一連の数字(数桁)を数値に変換できます。
"e5 d8"
には、strtol
「5」を見つけると数に変換するための正しい方法ではありません。