私は割り当てに取り組んでおり、その一部として文字列から整数を抽出する必要があります。
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」を見つけると数に変換するための正しい方法ではありません。