如何将 sscanf 用于带空格的字符串?

Bdf*_*dfy 1 c

例如我有字符串:

34912512        34912767        a.b.c.d.e - i.f.g.h.i       HJ      -
Run Code Online (Sandbox Code Playgroud)

此代码不起作用:

sscanf (line, "%ld\t%ld\t%s\t%s\t%s", &a, &b, &c, &d, &e );
Run Code Online (Sandbox Code Playgroud)

Aus*_*oke 5

这将一直读到换行符:

char a[123];
sscanf(line, "%[^\n]", a);
Run Code Online (Sandbox Code Playgroud)

如果您还希望它一直读到一个选项卡,您可以将其更改为: "%[^\t\n]"

由于您似乎已经将此字符串读入 buffer line,因此sscanfis的替代方法strtok将返回指向标记的指针line(以空格、制表符等分隔)。