【发布时间】:2015-11-11 19:16:03
【问题描述】:
我有一个关于使用 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;
}
期望的输出是: 啊 bbb
实际输出为: 啊 啊
【问题讨论】:
-
您的格式字符串的意思是“读取两个字符,然后跳过空格 - 如果有的话 - 然后读取三个字符”,这就是发生的事情。
-
@molbdnilo
"%2s %3s"更接近的意思是“跳过空白,如果有的话,读取 1 到 2 个非空白字符,跳过空白,如果有的话,读取 1 到 3 个非白色-空格字符”。