在带有换行符的缓冲区上使用sscanf:如何读取所有行?

时间:2014-09-16 23:40:25

标签: c string parsing scanf

在C中,如何在包含换行符的缓冲区上使用sscanf。

缓冲区示例:

buf = "Name: Sam\nID: 123\nLocation: 123\nDest: abc\0";

我想做类似的事情:

sscanf(buf, "%[^\n]s\n%[^\n]s\n%[^\n]s\n%[^\0]s", line1, line2, line3, line4);

sscanf仅选择line1。关于如何使这项工作的任何想法。

注意:我真的想避免在缓冲区上循环4次,这可能是一个可能的解决方案。

1 个答案:

答案 0 :(得分:0)

感谢WhozCraig的回答:

"丢失那些规格中的s,"%[^ \ n] \ n%[^ \ n] \ n ..."。 sscanf正在寻找一系列任何东西 - 但是换行,然后是' (它没有找到,然后......你希望得到这一点)。"