我有一个代码,希望在条之间的中间显示消息。我看了看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/

10-16 19:17