C 正在读取预期模式的字符串

C 正在读取预期模式的字符串,c,input,format,C,Input,Format,我想知道从符合特定模式的输入中读取字符串的可能方法。更具体地说,我想检查正确的模式 例如,如果我期望一个像“multiply 5,6”这样的命令,我想忽略空白,但要检查正确的模式,所以我想将“multiply”“5”和“6”从输入流中分离出来,以检查它们的有效性 有没有办法用scanf做到这一点?或者得到什么 谢谢以下代码将执行您想要的操作 #include <stdio.h> int main() { int num1, num2; char operation[15];

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

例如,如果我期望一个像“multiply 5,6”这样的命令,我想忽略空白,但要检查正确的模式,所以我想将“multiply”“5”和“6”从输入流中分离出来,以检查它们的有效性

有没有办法用scanf做到这一点?或者得到什么


谢谢

以下代码将执行您想要的操作

#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      8    ,     120

You entered "multiply 8,120"
运行此代码并尝试删除scanf中逗号前的空格,然后查看输入“乘以5,7”时会发生什么

  • 注意:%s和%d自动忽略前导空格
为了让scanf接受特殊格式的输入,您可以做很多奇妙的事情。如果您有任何其他具体问题,请随时提问

参考(c++站点,但功能与c相同):


在读取和匹配字符串方面存在无数问题。即使是
scanf
手册页本身也能提供足够的信息让你回答这部分问题。你做过任何基础研究或搜索吗?事实上,我做过搜索和研究,但无法理解答案。我刚开始学习C语言,解释还不清楚。虽然我不理解这种严厉的态度,但我认为这是一个提问和学习的地方。无论如何,谢谢你,在发布另一个问题之前,我一定会成为一名专家。这与成为专家无关。这是关于做基础研究和提出明确的问题。如果你认为scanf可以工作,那么仔细研究手册页,搜索示例并编写一些代码来尝试。最好的学习方法是尝试自己去做。如果您编写的代码不起作用,您无法理解为什么,那么请回来展示您的代码,并询问有关该代码的特定问题。事实上,你的问题的措辞并没有清楚地表明你对问题的哪一部分有困难。
Please Enter Input:     multiply      8    ,     120

You entered "multiply 8,120"