我希望能夠將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