#include <stdarg.h>
#include <string.h>
// 自定义无终止符的格式化函数
int my_sprintf_no_null(char *buffer, size_t size, const char *fmt, ...) {
va_list args;
va_start(args, fmt);
int len = vsnprintf(buffer, size, fmt, args); // 使用vsnprintf限制长度
va_end(args);
// 若len >= size,说明被截断,最后一个字符是\0(需处理)
if (len >= (int)size) {
buffer[size-1] = '\0'; // 确保缓冲区安全(可选)
return -1; // 截断错误
}
// 手动去除\0(若需要)
buffer[len] = ' '; // 或其他操作
return len;
}
// 使用示例
char buf[10];
my_sprintf_no_null(buf, sizeof(buf), "%d", 12345); // buf内容为"12345"(无\0)
|