gpt4 book ai didi

c - scanf 正则表达式 - C

转载 作者:太空狗 更新时间:2023-10-29 17:27:04 25 4
gpt4 key购买 nike

我需要读取一个字符串,直到写入以下序列:\nx\n:

(.....)\n
x\n

\n 是换行符,(.....) 可以是任何可能包含其他\n 字符的字符。

据我所知,scanf 允许使用正则表达式,但直到出现这种模式我才能让它读取字符串。你能帮我处理 scanf 格式字符串吗?


我正在尝试类似的东西:

char input[50000];
scanf(" %[^(\nx\n)]", input);

但它不起作用。

最佳答案

scanf allows regular expressions as far as I know

不幸的是,它不允许使用正则表达式:语法接近误导,但在 scanf 的实现中与正则表达式没有任何相似之处。 .所有这些都支持 character classes正则表达式,所以 %[<something>]被隐含地视为 [<something>]* .这就是为什么你调用 scanf转换为读取由除 '(', ')', 'x', and '\n' 以外的字符组成的字符串.

要解决手头的问题,您可以设置一个循环来逐个字符地读取输入。每次你得到一个'\n' , 检查一下

  • 到目前为止,您在输入中至少看到了三个字符,
  • '\n' 之前的字符是一个 'x' , 和
  • 'x' 之前的字符是另一个'\n'

如果以上所有情况都为真,则您已到达预期输入序列的末尾;否则,你的循环应该继续。

关于c - scanf 正则表达式 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com