在执行 cppcheck 时,cppcheck 显示“无效 scanf”,它说:
它会给我的程序带来任何崩溃吗?如何摆脱这个问题?
int a;
char str[32];
int part[4];
// after this i am storing some string in 'str'.
a = sscanf(str, "%d%d%d%d", &part[0], &part[1], &part[2], &part[3]); // here i am getting that cppcheck portability error.
最佳答案
通过编写 C++ 而不是 C,并使用 C++ 标准库工具而不是过时且通常不安全的 C 标准库工具。
#include <iostream>
#include <sstream>
void test()
{
std::string str("4 5 6 7");
int part[4];
std::istringstream ss(str);
ss >> part[0]
>> part[1]
>> part[2]
>> part[3];
}
关于c++ - 收到错误 "scanf without field width limits can crash with huge input data on some versions of libc",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36600061/