使用scanf的选择性输入。可能只读取ascii 0x79和0x6e

时间:2011-12-11 14:54:26

标签: c input ascii scanf

我只是想知道是否可以这样做:

char yn;

scanf("%79/6ec",yn);

所以yn只能变为y(0x79)或n(0x6e)

3 个答案:

答案 0 :(得分:3)

不,但您可以使用scanf来读取字符

scanf("%c" , &yn );

之后你必须检查是y / n还是非法输入。

if ( yn == 'y' ) {
  ...
}

答案 1 :(得分:3)

您可以使用%[转换并执行以下操作:

char yn[2];

if (scanf("%1[yn]", yn) == 1 && yn[0] == 'y')

答案 2 :(得分:3)

更好的方法是使用scanf scanset,如:

char c[2];
if( scanf("%1[yn]",c)==1 )
  puts("yn");
else
  puts("not");