我有一个代码,希望在条之间的中间显示消息。我看了看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
,以获得相同的结果,因为后者更短。关于c - 使用sprintf将字符串居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47730556/