gpt4 book ai didi

使用 sprintf 将字符串居中

转载 作者:行者123 更新时间:2023-11-30 14:52:11 25 4
gpt4 key购买 nike

我有一个代码想要在栏之间的中心显示消息。我查看了 C 函数,发现没有任何东西可以让我这样做。

sprintf(message,"============================================================");
send_message(RED, message);
sprintf(message, "[ Welcome %s ]", p->client_name);
send_message(RED, message);
sprintf(message,"============================================================");
send_message(RED, message);

我正在寻找一种通过计算始终集中显示的用户名大小来显示欢迎消息的方法。示例:

示例1:

=============================================
Welcome Carol
=============================================

示例2:

=============================================
Welcome Giovanna
=============================================

最佳答案

它没有特殊的函数,所以你应该做一下数学计算。

  • 计算条数和消息长度。
  • 减去它们并除以 2。
  • 如果消息长度是偶数,则商加 1。
  • 将消息的长度添加到商中。

示例代码:

#include <stdio.h>
#include <string.h>

int main(void) {
char* message = "Welcome Giovanna";
int len = (int)strlen(message);
printf("===============================================\n"); // 45 chars
printf("%*s\n", (45-len)/2 + ((len % 2 == 0) ? 1 : 0) + len, message);
printf("===============================================\n");

return 0;
}

输出:

=============================================
Welcome Giovanna
=============================================
<小时/>

PS:您可以将 (45-len)/2 + ((len % 2 == 0) ? 1 : 0) 替换为 (46-len)/2 code>,以获得相同的结果,因为后者更短。

关于使用 sprintf 将字符串居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730556/

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