gpt4 book ai didi

c - 使用 vsprintf 将字符串添加到另一种格式字符串的有效方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:57 27 4
gpt4 key购买 nike

我正在使用 vsprintf 从一种格式生成一个字符串,并且需要在记录它之前添加一个查找的前置字符串。下面的代码打印了格式字符串,但是我如何在前面加上另一个字符串呢?理想情况下以一种相当有效的方式。

例如,如果我这样调用:

LOG(SYSTEM1, DEBUG, "number=%d, string=%s\n", 1, "Hi");

我会看到打印:

SYSTEM1    number=1, string=Hi

到目前为止的代码:

#include <stdio.h>
#include <stdarg.h>

#define EMERGENCY 0
#define ERROR 1
#define WARN 2
#define INFO 3
#define DEBUG 4

enum SubSystemID { SYSTEM1, SYSTEM2, SYSTEM3, SYSTEM4 };

void LOG(enum SubSystemID id, unsigned long severity, const char* format, ...) {
static const char* chaTypes[] = {
"SYSTEM1", "SYSTEM2", "SYSTEM3", "SYSTEM4" };

char buffer[256];
va_list args;
va_start (args, format);
vsprintf(buffer, format, args);

// Code here to send a char* string to a logging system
printf(buffer);

va_end (args);
}

最佳答案

你可以试试:-

strcpy (buffer, chaTypes [id]);
vsprintf (&buffer [strlen (buffer)], format, args);

或者您可以预先计算 strlen 部分,使其成为一个整数数组:-

static int [] lengths = null;

if (lengths == null)
{
lengths = malloc (sizeof (int), sizeof chaTypes / sizeof chaTypes [0]);
foreach string
lengths [i] = strlen (chaTypes [i]);
}

关于c - 使用 vsprintf 将字符串添加到另一种格式字符串的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com