2016-10-28 6 views
1

問題は、1行のユーザー入力から2つの値を1つのchar配列に格納する必要があるという問題です。形式は "input1 input2"となります。input1は 'C2'のような文字列で、input2は '1.25'のような整数またはdoubleです。ユーザーはこれらの値を区切るためのスペースだけで入力します。 例:C/CHの多次元配列に1行のユーザー入力を割り当てる

User Input 
C2 1.25 

もう一つは、私はCのスーパーセットとC++のサブセットであるChのプログラミング言語を使用しています。これまで私はちょうどいくつかのCコードが私のIDE(ChIDE)で動作しないことを学んでいます。私はまだ多くのC++を学んでいない。現在私が読んでいる本で、私はChとC/C++の間の移行点にいます。

これまでのところ私はいくつかのコード行を試しましたが、私の本には複数行のユーザー入力値を1行とオンラインでスキャンする例はありません。このfgetsコードは動作していますが、それは2D配列で動作させることはできません。

char userNoteName[15][15]; 
//15 is arbitrary, ideally I want to use variables 
//and that the number of inputted values would be unknown. 
printf("Enter notes one at a time, in the format A#4 3,\n"); 
printf("where the first string is the note, and the number\n"); 
printf("that follows is the duration.\n"); 
printf("Type Q when you are done entering notes.\n"); 
fgets(userNoteName,15,stdin); 
printf("%s",userNoteName); 

私は完全にfgets関数を理解していない、と私はそれがまだ本の中で存在していないので、私のプロジェクトは、それを必要とは思わないので、私はまた、二つの配列を使用して試してみました。

ここは私の元々の考え方です。

char userNoteName[2][2]; 
scanf("%s%s", &userNoteName[0][0]); 
printf("%s\n", userNoteName); 

scanfが適切にフォーマットされていないため、これは間違っています。私はコーディングのためのより良い学習リソースを見つける必要があると思う。オンラインでさえ、私はこのアイデアのようなものを見つけるのに苦労しています。

+0

単語を読み込み、その後にフロートを読むには、 '%s%f'を使用します。 – Barmar

+0

ありがとうございました!私は試みました:scanf( "%s%f"、&userNoteName [0] [0]);それはエラーを出した。 – Codero

+0

文字列と浮動小数点を引数として指定する必要があります。これは本当に基本的なCの構文です。 – Barmar

答えて

0

私はChのを知りませんが、これは、あなたがCでそれを行うだろうかです:

char userNoteName[3]; 
float userFloatValue; 
scanf("%s %f", userNoteName, &userFloatValue); 

%sは、文字列としての単語を読み取るためである、と%ffloat

注意を読み込みC2のような2文字の文字列を保持するには、ヌルターミネータを使用できるように、3文字を保持するように変数を宣言する必要があります。 string1が長くなる場合は、適切なサイズの変数を宣言する必要があります。nullに1を追加することを忘れないでください。

関連する問題