-1

私のプログラムには、データを抽出して整数変数(値)に格納する必要があるchar配列(char data[])があります。そのために、プログラムで atoi を使用しました。問題は、char配列(データ)でnullを受け取ることがあることです。この値にatoiを使用すると、(null)の代わりに整数変数で値0が得られます

実際の関数は非常に大きく、ここにコード全体を掲載することはできません。以下で説明する機能から、私がここで何をしているのか、皆さんが少しでも理解してくれることを願っています。

Get_Data(char data[])
{
    int value;
    value = atoi(p);
}

私は最近、atoi の代わりに strtol を使用する必要があることを読みました。私もそれを試しました。しかし、私はまだ変数値に0を取得しています。

整数変数値で (null) を取得するには、どの関数を使用すればよいか知りたいですか?

null とは、ここでは空の文字配列を意味します

問題に固有の解決策を提供してください。上記の関数で、データが空の char 値を取得した場合、int 変数の値もゼロではなく空の値になるようにするにはどうすればよいですか??

4

3 に答える 3

3

atoi return zero for

str 内の非空白文字の最初のシーケンスが有効な整数でない場合、または str が空であるか、空白文字のみが含まれているためにそのようなシーケンスが存在しない場合、変換は実行されず、0 が返されます。

NULLまた、これらの値を in に代入し、not を保持できないため、返す必要はintありintませんNULL

于 2014-07-21T10:07:16.477 に答える
1

いいじゃないですか。

C++ には、次のように綴られた整数値はありません。null

整数形式の NULL は 0 のみです。

于 2014-07-21T10:02:31.740 に答える
1

atoiはできるだけ読もうとするからです。

次のように、代わりにstrtolを使用する必要があります。

char* endptr = NULL
char* myString = "OUPS";
long n = strtol(myString, &endptr, 10);

if (*endptr != '\0') {
  // ERROR
}

詳細な説明 (および例も) については、参照リンクを参照してください。

于 2014-07-21T10:00:51.820 に答える