我希望能够将stdin
上的字符与我的规范中的字符进行比较。这样做的目的是将所有其他输入过滤为错误,同时仅将指定的单个字符保留为命令。 像stdin
“nn”或“qddaw” - >错误再次出现,但是“n”使一些有用的东西。如何比较字符与C中给定字符的集合?
这是我心目中的“代码明智”:
if (input does not contain 'c' or 's' or 'q' or 'n') {
printf("some kind of error");
}
嗯,我试图创建一个特定的字符,如array[] = {'a', 'b', 'c'}
数组,所以我可以能够将其与上一个字符串比较stdin与功能strncmp ..就像
char c[256];
scanf("%s", c)
if (strncmp(array, c, 1) != 0) printf("error");
但它似乎没有工作。有什么建议么?
EDIT1:下面是实际的代码:
char c[256];
char* s = "nsrld";
char* quiter = "q";
do
{
printf(">");
scanf("%s", c);
if (only when there is no 'n' or 's' or other char from char* s on input)
{
errorHandle(ERROR_WRONG_CMD);
}
scanf("%*[^\n]"); scanf("%*c");
} while (strcmp(c,quiter) != 0);
,你可以看到我处理的“Q”的东西不错,但多个字符都在屁股痛。感谢您的任何建议。
编辑2:或者换句话说我需要一个函数,其将比较与一组给定的字符的输入且仅当有一个OR另一个(如“Q”或“S”的功能将通过(但如果有字符在一起,就像“QS”)
使用getchar(),您是否尝试打印'c'?打印出来就像这样:printf(“c =%c /%d \ n”,c,c);另外,'c','char'或'int'的类型是什么? – 2012-04-14 22:55:13
@GeorgeSkoptsov我编辑的帖子,因为我实际上需要区分输入“qdqqdq”和“q”,在这种情况下,只有独立的“q”才能完成这项工作,而其他任何输入都会报告错误。 – Markus 2012-04-15 11:57:45