是否可以使用 scanf 跳过所有字符,直到到达特定字符串。
我有一个 html 文件,我想跳过此字符串之前的所有字符(包括该字符串):"<h2><a href="
然后读取两个引号之间的http链接。
我偶然发现了一个多么古老的问题。尽管如此,它仍然在这里,我想我已经得到了一个很好的答案。那么,为什么不留给后代呢,对吧?
有人告诉你scanf
做不到。好吧,我不同意,原因如下:
scanf 可以忽略所有内容,直到找到所需字符串的第一个字母
scanf ("%*[^<]");
然后它可以尝试忽略您正在查找的字符串(逐个字符)。
found = scanf ("<h2><a href=\"%[^\"]", str_link) == 1;
如果还没有完成,它将失败,并且将停止执行,永远不会到达%[^\"]
命令,读取/存储所有内容,直到"
字符被发现。
在这种情况下,它返回0
, or EOF
,因为无法执行扫描(它返回能够填充的变量数量)
现在,如果它找到了,它最终将执行读取并返回1
.
-
注意:您应该检查文档以获取准确信息,可以在 cplusplus.com 上找到该文档
while ( !found && !feof(stdin) )
{
scanf ("%*[^<]");
found = scanf ("<h2><a href=\"%[^\"]", str_link) == 1;
}
我想文件的其余部分可以被忽略。
由你决定。
我认为这是一个很好的方法,因为它充分利用了scanf
速度快,而且不需要您存储整个文件。
这个想法可以应用于许多其他任务。
scanf
是一个非常强大的工具,尽管有点棘手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)