C 使用sprintf将字符串居中
我有一个代码,希望在条之间的中间显示消息。我查看了C函数,发现没有任何东西允许我这样做C 使用sprintf将字符串居中,c,printf,C,Printf,我有一个代码,希望在条之间的中间显示消息。我查看了C函数,发现没有任何东西允许我这样做 sprintf(message,"============================================================"); send_message(RED, message); sprintf(message, "[ Welcome %s ]", p->client_name); send_message(RED, message); sprintf(messag
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;
}
PS:您可以将
(45 len)/2+((len%2==0)?1:0)
替换为(46 len)/2
,以获得相同的结果,因为后者较短。没有显式命令。只需计算文本和条中的字母数,建立差值,除以2,并在前面加上空格。@koalo但我如何计算条数并应用于名称消息?你能举个例子吗?如果我算对的话,你的横杆是45=的。在Giovanni示例中,消息有16个字符。45-16=29. 29/2=14.5,所以消息的左边应该是14或15个空格。我同意@koalo,但它需要进一步改进。你能看到我的答案并告诉我你的意见吗?=)使用p->client\u name提取名称如何识别名称的大小?如果len%2==0
?,为什么要添加名称????无论如何,只要用(46-len)/2
替换整个表达式,以将名称@LuisColorado居中,就可以得到相同的结果。的确,你是对的,答案更新了!
=============================================
Welcome Giovanna
=============================================