我对sscanf函数的使用有疑问.
#include <iostream>
#include <stdio.h>
int main()
{
char a[3];
char b[4];
const char* p = "aaaaaaaaaaaaaaaaaa bbbbbb";
sscanf(p, "%2s %3s", a, b);
std::cout << a << std::endl;
std::cout << b << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
期望的输出是:aa bbb
实际输出是:aa aaa
如果您想跳过一个空格的所有字符,请使用%*[^ ]:
sscanf(p, "%2s%*[^ ] %3s", a, b);
Run Code Online (Sandbox Code Playgroud)
后面的星号%告诉sscanf忽略输入的相应部分.
这产生了所需的输出(演示1).
为什么这个案子不起作用?
Run Code Online (Sandbox Code Playgroud)char a[5]; char b[6]; const char* p = "word word2 , word"; sscanf(p, "%4s%*[^ ] %5s", a, b);
这不起作用,因为%s并且%[...]不能很好地混合.替换%Ns为%N[^ ]:
sscanf(p, "%4[^ ]%*[ ]%5[^ ]", a, b);
Run Code Online (Sandbox Code Playgroud)
演示2.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |