检查c中的char输入



我在这里有一段代码:

printf("Enter only parenthesis to arr or anything else to exitn");

scanf(" %c", &data);
if (data != '(' || data != ')' || data != '[' ||
data != ']' || data != '{' || data != '}')
{
printf("nExit scanning n");
return;
}

我的问题是,无论我做什么,当我输入任何括号时;如果";条件我也试过getchar.((,但也没用。你能告诉我怎么了吗我听不懂

问题很简单就解决了。

首先写入输入必须满足的条件

if (data == '(' || data == ')' || data == '[' ||
data == ']' || data == '{' || data == '}')

现在否定它

if ( !( data == '(' || data == ')' || data == '[' ||
data == ']' || data == '{' || data == '}' ) )

打开括号,你就会得到

if (data != '(' && data != ')' && data != '[' &&
data != ']' && data != '{' && data != '}')
{
printf("nExit scanning n");
return;
}

仅此而已。

另一种方法是使用报头<string.h>中声明的标准字符串函数strchr作为例如

if ( strchr( "()[]{}", data ) == NULL )
{
printf("nExit scanning n");
return;
}

或者,如果用户可以输入代码0,则

if ( data == '' || strchr( "()[]{}", data ) == NULL )
{
printf("nExit scanning n");
return;
}

最新更新