3

だから私は自分のクラスのこの課題に取り組んでおり、本はargc、argv、およびatof()アイテム(私にとってはすべて新しい)の使用方法について本当に不明であるため、それらを使用しようとしていますが、取得していますこのエラー、そしてそれを修正する方法がよくわかりません:

これは私のエラーです:

error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’

これは私のコードです:

int main(int argc, char** argv)
{
   //Code removed

   //Code removed

   float *feet = atof(argv); // <-- it says the error is with this line

   //Code removed

   return 0;
}

float convertFeet(float feet)
{
   float meters = feet * .3048;

   return meters;
}

このプログラムの「目的」は、指定されたフィートをフロートに変換し、それらを表示することです (同時にメートルにも変換します)。プログラムの atof()、argc、および argv 部分を追加する前にテストしたので、convertFeet() 関数が機能することは既にわかっています。誰かがこのエラーと非常に役立つ解決策をよりよく理解するのを手伝ってくれたら!

再度、感謝します、

-スティーブン

PSこれは、コンパイラが私に言ったように、確かにコンパイルエラーです。コードのその部分は不要であると考えたため、エラーのその部分を投稿しませんでした。

4

1 に答える 1

4

char** argv には複数の「文字列」を含めることができます。(C/C++ には技術的に文字列型がないことは知っていますが、概念的に私の言いたいことを理解していただければ幸いです)。argv は、実行可能ファイルの名前とすべてのパラメーターを含む char * (文字列) の配列です。

例: myfile.exe param1 param 2

譲るだろう

argv[0] = myfile.exe
argv[1] = param1
argv[2] = param2

argc = 3

これにはいくつかの方法がありますが、最も簡単な方法は次のとおりです。

float feet = atof(argv[1]);

エラーチェックを行って、argc が少なくとも 2 であることを確認する必要があります。複数のパラメータ argv[2]、3 などがある場合もあります (argc == 1 の場合、パラメータは指定されません)。

それが役立つことを願っています。

于 2013-11-28T18:27:35.190 に答える