gpt4 book ai didi

c - C中fprintf的间距

转载 作者:太空狗 更新时间:2023-10-29 16:08:11 28 4
gpt4 key购买 nike

这是我正在处理的代码部分:

void update_log(char *name, pthread_t ID, char *status, char *update)
{
time(&rawtime);
time_str = asctime(localtime(&rawtime));
time_str[strlen(time_str) - 1] = 0;
fprintf(log_file, "[%s] [%12s] [%u] [%s] %s\n", time_str, name, (unsigned int)ID, status, update);
}

输出是:

[Sat Mar  9 21:36:20 2013]  [        main]  [197777152]  [OK]  ******
[Sat Mar 9 21:36:20 2013] [update_table] [172680960] [OK] **********
[Sat Mar 9 21:36:22 2013] [update_table] [172680960] [OK] ******
[Sat Mar 9 21:36:25 2013] [ main] [197777152] [OK] ****************

有没有办法让 name 变量的输出看起来像这样(所以它仍然需要 12 个 block 并且仍然在括号中):

[Sat Mar  9 21:36:20 2013]  [main]          [197777152]  [OK]  ******
[Sat Mar 9 21:36:20 2013] [update_table] [172680960] [OK] **********
[Sat Mar 9 21:36:22 2013] [update_table] [172680960] [OK] ******
[Sat Mar 9 21:36:25 2013] [main] [197777152] [OK] ****************

我正在考虑在 fprintf() 函数之前向 name 变量添加括号,但是在 C 中是否有一种简单的方法可以在字符串的开头添加一个字符?

谢谢。

最佳答案

这对我来说似乎很容易。

#include <stdio.h>

int main()
{
char buffer[16];

sprintf(buffer,"[%s]", "main");
printf("[0] %-14s [2]\n", buffer);

sprintf(buffer,"[%s]", "update_table");
printf("[0] %-14s [2]\n", buffer);

sprintf(buffer,"[%s]", "main");
printf("[0] %-14s [2]\n", buffer);

return 0;
}

输出

[0] [main]         [2]
[0] [update_table] [2]
[0] [main] [2]

关于c - C中fprintf的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319660/

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