2017-04-15 6 views
0

私はプロジェクトに取り組んでいます。私はいつもそこにないintを使って文字列を読み込む方法を理解できないようです。例えばC - scanf string(オプションのintを使用)

:私は2つの変数

int argument = 0; 
char instruction[16]; 

、入力時にを持っている がある:

"string" 57 

私は命令と引数に57で "文字列" を載せていきたいと思います。これは、私はこの問題は、入力がその後、私は命令で「文字列」を入れたいと0 ​​ に等しい引数を残すだろうつまり

"string" 

、番号なしにできることである

scanf("%s %d", instruction, &argument); 

で行うことができますしかし、プログラムは "文字列"の後の数字を期待し、それが得られるまで続行しません。

入力が2種類ある場合、標準入力からの入力を読み取るにはどうすればよいですか?私はいくつかのソリューションを試しましたが、どれも解決しませんでした。

ありがとう

答えて

4

これは標準入力を直接解析しないことで行います。代わりに

  1. fgetsで入力行を読み取ります。
  2. (おそらくsscanf付き)整数にその行を解析しようとしています。
    • あなたが成功した場合、あなたの整数を持っています。
    • それ以外の場合は、元の文字列があります。
+0

こんにちは、 'sscanf'を解析する方法を詳しく教えてください。ありがとう –

+3

@TomášHoreckýマニュアルページは次の停止です。しかし、 'scanf'と' sscanf'ファミリーファミリーはすべて値を返します:スキャンに成功したアイテムの数。アイテムが足りない場合、 'scanf'はストールしますが' sscanf'はストールしません。 –

+0

@WeatherVaneありがとう、私は絶対に関数が値を返したことに気付かなかった。私はすぐに何かを一緒に投げようとしました、そして、それはこれまで働いていたようです。 –

関連する問題