- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C++ 编写一个记录器,为了简化输入行,我使用 vsnprintf 函数来构建日志行
void CLogger::RegManLog(const LogLevel & logLevelMask, char * Format, ...)
...
...
va_start(marker_, Format);
vsnprintf(buffer_ ,MaxLogBuffSize , Format, marker_)
va_end(marker_);
printer_ += buffer_;
...
...
一切都很好,直到我不小心将数字输入到字符串中
整数检验 = 10;例如:“现在我将显示一个字符串 %s”,测试
试图添加“try and catch”,但我认为 vsnprintf 确实有抛出,所以它无论如何都会崩溃。试图从 vsnprintf 获取返回值,它返回值,而字符串很好,当遇到同样的问题时,它崩溃了
我有什么想法可以解决这个问题吗?
谢谢
最佳答案
关于c++ - vsnprintf 崩溃程序,以防 %s 设置为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128731/
我有以下代码,并试图理解为什么 vsnprintf 会导致格式字符串漏洞。 如果我执行如下程序“./test %llx”,这个漏洞是否是因为“%llx”被传入va_list,然后被vsprintf解释
我正在尝试使用 TI C2000 微 Controller 在 TFT 显示器上显示格式化字符串。为了实现这一点,我使用了以下函数。 void text_writeFormatAtPoint(font
是否可以使用 vsnprintf 从数组中的确切值开始打印?例如,我想使用 vsnprintf 从数组中的第 25 个字符开始打印。我可以只输入这段代码吗? va_list args; #define
我有以下功能: void printerror(char *fmt, ...) { char string[256]; va_list str; va_start(str, f
带有 myPrint() 函数的超长字符串将会崩溃。 我认为 vsnprintf() 无法从 linux 手册页返回超过缓冲区长度的写入大小。 我预期的字符串是缓冲区大小的截断字符串,但这在下面的测试
我正在将一些非常古老(> 10y)的 C 代码移植到现代 Linux。我在自定义编写的 vsnprintf() 包装器中遇到了段错误(显然它的任务是检测重复的输出字符串并保留它们): char* st
我正在编写需要格式化字符串的代码,我想避免缓冲区溢出。 我知道如果 vsnprintf 可用(从 C99 开始)我们可以: char* formatString(const char *format,
我正在尝试编写一个宏来简化 LOG4CPLUS 的使用。但是我在写宏的时候遇到了一些麻烦。 这是我的 cpp 文件中的内容: Logger logger = Logger::getInstance("
我在 ubuntu 12.04 上,使用 uname -a:Linux lu057801 3.2.0-31-generic#50-Ubuntu SMP Fri Sep 7 16:16:45 UTC 2
在实现一个简单的 printf 样式记录器时,我遇到了 vsnprintf 崩溃。这就是我调用记录器实用程序的方式: LoggerUtil->LogInfo("Whatever info here %
以下代码将在 Visual Studio 2012 上给出预期结果,但在 XCode 5.0 上不会。我想念什么? static std::string format(const std::strin
我正在重写一些代码以与 32 位和 64 位架构兼容,但我在调用 vsnprintf 时遇到了问题。 vsnprintf 似乎没有在任一架构上正确处理来自 inttypes.h 的固定大小整数类型。
我有以下声明: vsnprintf(target, size - 1, "%ls_%ls", str16_1, str16_2); 为什么这在 gcc 上失败了? 我在 Windows 上是这样使用的
我目前正在将 C 头文件翻译成 delphi。 delphi中有没有函数可以代替C语言的vsnprintf?或者它是否存在于任何常见的 DLL 中? int vsnprintf(char *str,
vsnprintf() 能否返回一个大于 1 的负值?如果是,它是在什么情况下这样做的? 我尝试使用 %ls 作为 char 数组的格式说明符,还尝试复制大于分配的数组。在这两种情况下,我都得到 -1
我有一个大小为 N 的 char 数组,我需要在不同部分获取 vsnprintf 输出,以防其长度超过 char 数组大小减去 1(N-1 字节)。 我想实现类似 printf 的东西,但通过 UAR
我看过这个question以及这些 PDF 的 1和 2 , 这个page并且非常了解如果我这样做会发生什么 printf(SOME_TEST_STRING)。但我不明白的是,与 vsprintf 相
我有以下功能: void raiseError(const char *msg, ...) { va_list ap; va_start(ap, msg); // use variab
vsnprintf 的预期行为是什么?当它有一个输入 NULL 字符串和/或 size=0 时,例如 vsnprintf(NULL, 0, "%d", p); 或者 vsnprintf(NULL, 1
我的代码如下: #include #include #include int test(const char *fmt, ...); int main(void) { int i
我是一名优秀的程序员,十分优秀!