私は例えば、以下の行のようなコマンドを使用してプログラムを実行します私はCで私のプログラムを実行すると、コマンドラインを使用して入力いくつかのことができるようにする必要があります。その後、私は理想的だろうコマンドライン引数をCのdouble配列/ベクトルに読み込むにはどうすればよいですか?
./programName 1 2.5 A.txt B.txt 0.0,0.5,1.0,1.5
さまざまなエントリは別々の変数に格納されます。カンマで区切られた最後のセット(0.0,0.5,1.0,1.5の数字)をMyVectorというベクトルとして保存するのが難しいです。私がしようとするとMyVectorに値を格納する行以外
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]){
int x = atoi(argv[1]); // x = 1
float y = atof(argv[2]); // y = 2.5
char *AFileName = argv[3]; // AFileName = A.txt
char *BFileName = argv[4]; // BFileName = B.txt
double MyVector[4] = atof(argv[5]); // MyVector = [0.0,0.5,1.0,1.5]
printf("x = %d\n",x);
printf("y= %f\n",y);
printf("AFileName= %s\n",HFileName);
printf("BFileName= %s\n",AFileName);
for(int i=0;i<4;i++)
{
printf("MyVector[%d] = %f\n",i,MyVector[i]);
}
}
これらの作業のすべて:ここ
は、私が試したものの一例です。あなたが望んでいたよう
コンマに達したときに停止する 'argv [5] 'を反復し、以前に反復された文字に対して' atof(...)'を呼び出す必要があります。あなたが 'argv [5]'の終わりに達するまですすぎ、繰り返す。 –
確認したい場合は、 'atof()'の代わりに 'strtod()'を使うことをお勧めします!実際、 'strtod()'では、(次のコンマを最初に見つけ出す代わりに)あなたが変換し、それが提供する 'end'ポインタを利用することができます。 –