c - 如何获取带有前置字符的输入?
问题描述
我正在尝试scanf()
用于这种特定类型的输入。输入如下
n = 2
m = 3
我知道scanf("%d %d", &n, &m);
由于“n =”和“m =”的存在而无法完成工作,我不应该使用scanf()
吗?还是可以使用某种正则表达式或任何东西来完成?
解决方案
如果您输入的形式是:
<name><zero or more spaces>=<zero or more spcaes><number>
<name><zero or more spaces>=<zero or more spcaes><number>
您可以通过使用和使用继续阅读直到找到 a来阅读该<name>
部分而不存储它。%*
[^=]
'='
它可能看起来像:
int main(void) {
int n,m;
if (scanf("%*[^=] = %d %*[^=] = %d", &n, &m) != 2)
{
printf("bad input\n");
}
else
{
printf("Now n is %d and m is %d\n", n, m);
}
return 0;
}
它将处理如下输入:
n = 2
m = 3
和
nnnnnn =20
mmmmmmm = 100
和
n = 2
m=3
甚至单行输入,例如:
n = 2037 m=3733
推荐阅读
- c# - 如何在 ASP.Net 中通过 xml 中的 id 读取特定数据
- android - 未连接适配器;跳过布局:RecyclerView & Adapter
- c++ - 如何检测何时按下特定键
- redis - 如何将 `keys_and_args` 传递给 redis-py' `eval` 函数,然后传递给 lua 脚本
- android - 受信任的网络活动中的主要活动
- r - 使用来自另一个数据帧的值查找矩阵中的单元格值
- java - 如何向后旋转数组元素
- javascript - 节点:如何将 JSON 转换为 Markdown
- database - React-Native 身份验证和 Cloud Firestore
- c# - 侦听器方法中的范围问题