2016-05-16 67 views
-1

我想知道从符合特定模式的输入中读取字符串的可能方式。更具体我想检查正确的模式阅读预期模式的字符串

例如,如果我期望一个像“乘以5,6”的命令,我想忽略空格,但检查正确的模式,所以我想单独“乘”“5 ,“和”6“来检查每个输入流的有效性

有没有办法用scanf来做到这一点?或得到?

谢谢

+0

有阅读和字符串匹配无数存在的问题。甚至仅仅是'scanf'手册页就能提供足够多的信息来回答你的问题。你做过任何基础研究或搜索吗? – kaylum

+0

其实我没有搜索和研究,但无法理解答案。我刚刚开始学习C语言,但我的兴趣还不清楚。 虽然我不明白苛刻的态度,但我认为这是一个提问和学习的地方。无论如何,我会在发布另一个问题之前成为专家。 –

+0

这不是关于成为专家。这是关于做基础研究并提出一个明确的问题。如果你有一个想法'scanf'可以工作,那么仔细研究手册页,搜索示例并编写一些代码来试用它。学习的最好方法是尝试自己做。如果你编写的代码不起作用,你不能解决为什么然后回来显示你的代码并询问关于该代码的具体问题。事实上,你的问题不是用来说明你遇到问题的哪一部分问题。 – kaylum

回答

0

以下代码将做你想做的。

#include <stdio.h> 

int main() 
{ 
    int num1, num2; 
    char operation[15]; 
    printf("\nPlease Enter Input: "); 
    scanf("%s%d ,%d",operation,&num1,&num2); // note the space before the comma 
    printf("\nYou entered \"%s %d,%d\"\n",operation,num1,num2); 

    return 0; 
} 

运行该代码产生以下(输出取决于输入):

Please Enter Input: multiply 5,6 

You entered "multiply 5,6" 

与输入的不同部分空间再次运行它:

Please Enter Input:  multiply  8 ,  120 

You entered "multiply 8,120" 

运行该代码,并请尝试删除scanf中逗号前的空格,并查看在输入“乘以5,7”时会发生什么情况。

  • 注意:%s和%d自动忽略前导空格。

有很多奇特的事情,你可以做,让scanf接受特殊格式的输入。如果您有任何其他具体问题,请随时询问。

参考(C++网站,但相同的功能,C):

http://www.cplusplus.com/reference/cstdio/scanf/