0

簡単なベクトル計算機を作成するために atof() を使用する方法を見つけようとしていますが、唯一の問題はベクトルの要素を入力することです。文字が変換されない場合、戻り値は 0 になるため、atof を使用します。ユーザーが fgets から文字配列に入力した値が atof に渡される前に 0 かどうかを確認する方法はありますか?

文字をチェックするためのこれまでのコードは次のとおりです。

do
{
    printf("%s", promptMessage);
    fgets(size, 256, stdin);
    /*if(size == 0)
    {
        myInput = atof(size);
        sucessful = true;
    }*/
    if(atof(size) != 0)
    {

        myInput = atof(size);
        sucessful = true;
    }
    else
    {
        printf("Please enter a correct number: ");
    }
}while(!sucessful);

あまり意味が分からない場合は申し訳ありませんが、私が求めているのは、文字配列の値が 0 であるかどうかを atof に送信する前に確認するか、何らかのチェックを行って、実際に 0 の値を設定できるようにすることです。ベクトル要素のエントリ?

4

2 に答える 2

-1

通常、最も簡単な解決策を見つけるのは困難です。

if ( memcmp(buffer,"0.0\n",4) == 0 )
{
    // zero - can call atof
}
else
{
    // whatever
}

もちろん、ゼロが実際にこの方法で表され、他のパターンでは表されないことが要件になる場合があります。結局、正気な人は -0.000 などではなく 0.0 と書きます ;-)

于 2013-11-08T23:40:30.100 に答える