是否可以使用 scanf 跳过所有字符,直到到达特定字符串。
我有一个 html 文件,我想跳过这个字符串之前的所有字符,包括这个字符串:"<h2><a href="
然后阅读两个引号之间的 http 链接。
最佳答案
我偶然发现了一个多么古老的问题。尽管如此,它仍然在这里,我想我已经得到了一个很好的答案。那么,为什么不留给下一代,对吧?
你被告知 scanf
不能这样做。好吧,我不同意,原因如下:
scanf 可以忽略所有内容,直到找到所查找字符串的第一个字母
scanf ("%*[^<]");
然后它可以尝试忽略您要查找的字符串(逐个字符)。
found = scanf ("<h2><a href=\"%[^\"]", str_link) == 1;
它会失败,如果它还没有,它将停止执行,永远不会到达 %[^\"]
命令,该命令读取/存储所有内容,直到 "
找到字符。
在这种情况下,它返回 0
或 EOF
,因为它无法执行扫描(它返回它能够填充多少变量)
现在,如果确实找到了,它将最终执行读取并返回 1
。
注意:您应该查看文档以获得准确的信息,这些信息可以在 cplusplus.com 上找到
while ( !found && !feof(stdin) ) { scanf ("%*[^<]"); found = scanf ("<h2><a href=\"%[^\"]", str_link) == 1; }
我想文件的其余部分可以忽略不计。 由你决定。
我想这是一个很好的方法,因为它充分利用了 scanf
的速度,而且不需要您存储整个文件。
这个想法可以应用于许多其他任务。
scanf
是一个非常强大的工具,尽管有点棘手。
关于c - scanf 跳过所有直到一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213412/