我试图使用sscanf解析一个大的代理txt文件(即带有代理信息(ip,port,protocol.)的文件),我遇到了一个问题,其中有不相同长度的ip地址,如示例所示,该行留下了不同的空白:
72.210.221.197 4145 Socks5 United States Elite 932ms 93.8% 10 minutes
176.98.90.20 8080 HTTP Ukraine Elite 183ms 77.3% 4 minutes
在ip和port之间的第一行有2个空格,在第二行有4个空格。由于%s一直读到空格,sscanf有没有办法忽略所有的空格?
2条答案
按热度按时间liwlm1x91#
一个非常简单的函数实现:
对于你的输入,它是:
PS它可以写得更好,但宿醉是禁止我的大脑形式太复杂的数学
v2g6jxz62#
当人们仔细观察这两条样品线时,似乎这是一个TSV。制表符分隔值列表.如果文件确实包含制表符,那么去掉各个字段将是
strtok()
的一个简单用法。(scanf()
处理 * 空白 *。任何这样的实现都是《双城之战》。)测试结果:
简单的解决方案是最好的解决方案。