【发布时间】:2026-01-31 01:40:01
【问题描述】:
假设我有这个简单的代码:
#include <stdio.h>
#define BUFFER_LEN 10
int main()
{
char buffer[BUFFER_LEN];
sprintf(buffer, "Oh noes, it's too long! What can I do?");
return 0;
}
显然它不起作用,因为缓冲区太小而无法包含字符串。我知道可以使用不同的功能,以及缓冲区的不同内存处理。 但是我的问题是:是否有可能以某种方式检查缓冲区是否溢出,如果是,则打开文本文件并写入它,而不是将其放入缓冲区中。
【问题讨论】:
-
根据缓冲区大小检查您尝试写入的内容的长度?没有内置函数可以做你想做的事,所以你需要手动滚动它或找到一个库。
-
这意味着我必须存储我想通过 sprintf 输入的输入并使用 BUFFER_LEN 检查它的长度,或者有没有办法访问 sprintf() 函数的第二个参数的长度,在这个案例将是“哦,不,太长了!我该怎么办”?
标签: c