私は、2つのベクトルのアドレスをユーザーの入力に従って2つの配列に記録するように求めるプロジェクトがあります。しかしながら。ユーザがscanfを使用してdoubleとcharを同時にスキャンする方法
3 1 2 3 3 4 5
を書き込む場合などには、ベクターは、3次元である2つのベクトルが(1,2,3)(3,4,5)
であることを意味します。ユーザーは、
2 1 2 2 3
を書き込んだ場合には、ベクトルは2次元である2つのベクトルが(1,2)(2,3)
であることを意味します。これらの2つのベクトルの座標を2つの二重配列xとyに記録する必要があります。 scanfを使用してこれらの2つの配列に座標を読み取るにはどうすればよいですか? (私は、ユーザーが正しい書式で書いているかどうか分からないので、数字を書くことになっている場所に文字やその他の記号を書くことが可能です。数字以外の文字を書いた場合、 1.)
私のコードは、これまで
double x[100];
char c;
c = getchar();
do {
scanf("%lf",x)}
while (c!= '\n');
'scanf'で不正なユーザ入力を検出して回復することはできません。代わりに 'fgets'を使うことを考えてください。 – melpomene
私が以前提案していたように、 'strtok()'でトークンに分割したパラメタをトークン化してフロートトラフ 'atof()'に変換するべきです。 ** melpomene **からの示唆によれば、 'stdin'から' gets() 'を使用します。 – weirdgyn
しかし、私はこの問題に対してscanfを使う必要があります。すべて(doubleとchar)を配列に最初に格納し、配列の要素が数値かどうかを確認することは可能ですか? –