使用sprintf

时间:2017-12-09 16:19:23

标签: c printf

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

1 个答案:

答案 0 :(得分:1)

它没有特殊功能,所以你应该做数学。

  • 计算条数和信息长度。
  • 减去它们除以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,以获得相同的结果,因为后者更短。