我发现了 scanf 的一个 bug
  • 板块学术版
  • 楼主fjy666
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/1/13 16:16
  • 上次更新2023/10/24 04:25:38
查看原帖
我发现了 scanf 的一个 bug
366338
fjy666楼主2023/1/13 16:16
//Code by fjy666(https://www.luogu.com.cn/user/366338)
#include <bits/stdc++.h>
using namespace std;
char s[1005];
int main() { 
	while(true) {
		scanf("%[^\n]%*c", s);
		printf("%s\n", s);
	}
	return 0;
}

以上代码模拟了 std::getline 的功能。scanf 读入字符串 s,并且在读到 \n 时停止。最后的 %*c 把换行符读入。
输入任何正常的字符串均无问题,但是当你输入空串时会导致换行符无法读入且 s 中也没有 \0
我怀疑这是 scanf 的 bug。
平台:Windows 7
编译器版本:gcc 11.2.0

2023/1/13 16:16
加载中...