2017-11-06 11 views
0

ための単一のscanf():言語:C;必要に応じて何1つのまたは2の入力

シングルのscanf()*入力の2種類に対応し、前に初期化された変数/秒に割り当てることができ声明。

*または必要なことを行うことができる他の機能/方法。入力の

タイプ:

  1. %c %i - 例:56
  2. %c C - 例:

cは現在の問題:

scanf("%c %i", &c, &i);は - 指定する必要があります%iしかし、2番目の引数がない場合があります%i。可能な入力の

例:

  • C 567(同じ行)

  • I 21(同じ行)

  • H

+2

あなたはできません。 'fgets'を使って行を読み、そこから' sscanf'を使います。 –

+2

単一の 'scanf()'でこれを行う必要がある理由は何ですか?他の関数が受け入れられるならば、あなたは複数の 'scanf()'呼び出し(あるいは何でも)を含むロジックを一緒に簡単に書くことができます。それがプログラミングです。 –

+1

何を試しましたか? – klutt

答えて

3

あなたができましたfgetsを使用して行を読み、インタラクティブではないsscanfを使用し、正常に解析されたフィールドの数を数え、一致して動作します。

#include <stdio.h> 

int main() 
{ 
char buffer[100]; 
char c; 
int i; 

fgets(buffer, sizeof(buffer), stdin); 
int nb_toks = sscanf(buffer,"%c %i", &c, &i); 
switch (nb_toks) 
{ 
case 2: 
    printf("%c %i\n",c,i); 
    break; 
case 1: 
    printf("%c\n",c); 
    break; 
default: 
    /* some error management */ 
} 

} 
関連する問題