は、scanfにオプションの入力変数を持たせる方法がありますか?scanfにオプションの入力変数
私はEOFまで入力をスキャンするプログラムを持っています。 I型(またはファイルからの読み込み)する場合
+ 10 20 30
- 10 20 30
? 10
+または - 私が入力したときには、常に3つの数字が続きますがされています。それの入力は次のように見ることができますか?必ず1つの番号(常に)が続きます。
私の現在のコードは次のようになります。
#include <stdio.h>
#include <stdlib.h>
int main(){
char action;
int dc1,dc2,cable;
while(scanf(" %c %d %d %d",&action,&dc1,&dc2,&cable)!=EOF){
if((dc1==dc2)||(cable<1)||(dc1>999)||(dc2>999)||(dc1<0)||(dc2<0)){
printf("Wrong input.\n");
return 0;
}
else{
if(action=='+'){
/*code*/
}
else if(action=='-'){
/*code*/
}
else if(action=='?'){
/*code*/
}
else{
printf("Wrong input.\n");
return 0;
}
}
}
return 0;
}
今、それは私がを入力したい場合でも、3つの数字のすべての時間を入力するために私を必要とします「?」アクション。
scanfの変数のいくつかをオプションにする方法はありますか?入力 "?10"も有効です。
PS。
コードを削除して長すぎないようにしました。私は必要なものがすべて含まれていることを願っています。
コードをあまりにも多く修正する必要がなければ、基本的には完了しているので、私はまた感謝します。これは、私のコードを回すのを止めている唯一のものです。
PPS。これは宿題のためのものです。
'scanf()'を使用しています。 'fgets()'を使って行を読み込み、 'sscanf()'を使ってそれを解析します。成功したコンバージョンの数を取得してテストし、適切に対応します。 –
@JonathanLeffler私はfgets()とsscanf()にはあまり慣れていません。あなたはどうすればいいのですか? – Jano
試しましたか?何を試しましたか?あなたが遭遇した困難は何でしたか?あなたは 'fgets()'を学ぶ必要があります。なぜなら、それを使う方法を知らないと役に立たないからです。十分な大きさのバッファ(文字配列)を使用するようにしてください。私はcharバッファ[4096];を提案して、不条理な入力でも問題が生じないことを合理的に確かめます。 'sscanf()'を使うのは簡単です。最初の引数として入力行を渡します。残りは 'scanf()'と似ています。 –