带字母,空格和整数的sscanf

时间:2017-01-27 10:26:30

标签: c scanf

我尝试使用sscanf从文本文件中读取一行,然后将其中的部分保存到不同的变量中。 文本文件如下所示:

name 12345

所以我写了以下代码:

sscanf(buffer, "%s %d", name, &number);

效果很好,但是当名字之间有空格时我该怎么办? e.g。

name lastname 12345

甚至是数字?

name the3rd 12345

我的sscanf在这两个例子中不起作用。我试图使用[^]但没有成功甚至%* s%[^ 0-9]%d但是也没有用。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我建议不要试图解决问题。如果sscanf()很难,那可能不是正确的解决方案。

我建议使用实际的正则表达式(如果你有<regexp.h>很容易),或者使用手动解析技术来查找最后一个空格并将字符串拆分。毕竟,它可以像strrchr(buffer, ' ');一样简单。